Funzione KsSetMajorFunctionHandler (ks.h)
La funzione KsSetMajorFunctionHandler imposta il gestore per una funzione principale specificata in modo da usare l'invio interno. Esegue il routing attraverso una KSDISPATCH_TABLE contenuta nell'intestazione dell'oggetto opaco come 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 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. In questo modo il puntatore di funzione principale nell'oggetto driver viene impostato su una funzione interna che quindi invia alla funzione KSDISPATCH_TABLE. Si presuppone che il puntatore a questa tabella sia il primo elemento di una struttura a cui punta FsContext nell'oggetto file dell'IRP specifico inviato. Gli identificatori di funzione principali validi sono elencati.
Identificatore | Descrizione |
---|---|
IRP_MJ_CREATE | Creare IRP. In questa istanza, è possibile usare una richiesta di creazione 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. Si presuppone che il primo elemento nell'extent dell'oggetto driver contenga una struttura KSDEVICE_HEADER utilizzata per trovare il tipo di oggetto da creare, in base al nome passato. Se viene specificato un oggetto file padre, il KSDISPATCH_TABLE dell'oggetto. ChildCreateHandlerTable nella 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 dispatch di I/O veloce, anziché alla tipica voce della funzione principale. Questa opzione è 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 l'invio normale, 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 a una funzione simile. |
Valore restituito
Restituisce STATUS_SUCCESS se l'identificatore MajorFunction è valido.
Osservazioni
Se un gestore di 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 veloce deve essere impostata anziché la voce basata su IRP.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
intestazione | ks.h (include Ks.h) |
libreria | Ks.lib |