Condividi tramite


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