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 |