Funzione KsSetMajorFunctionHandler (ks.h)

La funzione KsSetMajorFunctionHandler imposta il gestore per una funzione principale specificata per usare il dispatching interno. Instrada attraverso una KSDISPATCH_TABLE contenuta nell'intestazione dell'oggetto opaco per essere il primo elemento all'interno di una struttura a cui punta un fsContext all'interno di un oggetto file. L'invio presuppone che la tabella e la struttura FsContext vengano inizializzate dal dispositivo usando KsAllocateObjectHeader.

Sintassi

KSDDKAPI NTSTATUS KsSetMajorFunctionHandler(
  [in] PDRIVER_OBJECT DriverObject,
  [in] ULONG          MajorFunction
);

Parametri

[in] DriverObject

Specifica l'oggetto driver la cui funzione principale deve essere gestita.

[in] MajorFunction

Specifica l'identificatore di funzione principale da gestire. Questo imposta il puntatore della funzione principale nell'oggetto driver a una funzione interna che quindi invia alla funzione KSDISPATCH_TABLE . Si presuppone che il puntatore a questa tabella sia il primo elemento in una struttura a cui fa riferimento FsContext nell'oggetto file dell'IRP specifico inviato. Gli identificatori di funzione principali validi sono elencati.

Identificatore Descrizione
IRP_MJ_CREATE Create IRP. In questa istanza, una richiesta di creazione può essere usata per la creazione di una nuova istanza di un filtro o per la creazione di un oggetto, ad esempio un pin sotto un filtro o un orologio sotto un pin. Ciò presuppone che il primo elemento nell'estensione dell'oggetto driver contenga una struttura KSDEVICE_HEADER usata per trovare il tipo di oggetto da creare, in base al nome passato. Se viene specificato un oggetto file padre, tale oggetto KSDISPATCH_TABLE. ChildCreateHandlerTable in FsContext viene esaminato per determinare quale gestore usare per la creazione o usare la tabella dell'oggetto dispositivo.
IRP_MJ_CLOSE Chiudere IRP.
IRP_MJ_DEVICE_CONTROL IRP del controllo del dispositivo.
IRP_MJ_READ Leggere IRP.
IRP_MJ_WRITE Scrivere IRP.
IRP_MJ_FLUSH_BUFFERS Scarica IRP.
IRP_MJ_QUERY_SECURITY Eseguire query sulle informazioni di sicurezza.
IRP_MJ_SET_SECURITY Impostare le informazioni di sicurezza.
KSDISPATCH_FASTIO Questo flag può essere aggiunto all'identificatore MajorFunction per specificare che la voce fa riferimento alla tabella di invio di I/O veloce anziché alla tipica voce della funzione principale. Questa operazione è valida solo con IRP_MJ_READ, IRP_MJ_WRITE o IRP_MJ_DEVICE_CONTROL. Il driver è responsabile della creazione della tabella DriverObject-FastIoDispatch>. Come per il normale invio, se un gestore è impostato per l'oggetto driver, tutti gli oggetti file devono gestire tale I/O veloce, anche se la voce punta solo a DispatchFastIoDeviceControlFailure o una funzione simile.

Valore restituito

Restituisce STATUS_SUCCESS se l'identificatore MajorFunction è valido.

Commenti

Se un gestore delle funzioni principale è impostato per un oggetto driver, tutti gli oggetti file devono gestire tale funzione principale, anche se la voce punta solo a KsDispatchInvalidDeviceRequest.

KSDISPATCH_FASTIO

Questo flag può essere usato per specificare che la voce di I/O rapida deve essere impostata anziché la voce basata su IRP.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione ks.h (include Ks.h)
Libreria Ks.lib