KsSetMajorFunctionHandler, fonction (ks.h)
La fonction KsSetMajorFunctionHandler définit le gestionnaire d’une fonction principale spécifiée pour utiliser la répartition interne. Il route à travers un KSDISPATCH_TABLE contenu dans l’en-tête d’objet opaque pour être le premier élément dans une structure pointée par un FsContext dans un objet file. La répartition suppose que la table et la structure FsContext sont initialisées par l’appareil à l’aide de KsAllocateObjectHeader.
Syntaxe
KSDDKAPI NTSTATUS KsSetMajorFunctionHandler(
[in] PDRIVER_OBJECT DriverObject,
[in] ULONG MajorFunction
);
Paramètres
[in] DriverObject
Spécifie l’objet pilote dont la fonction principale doit être gérée.
[in] MajorFunction
Spécifie l’identificateur de fonction principale à gérer. Cette opération définit le pointeur de fonction principal dans l’objet pilote sur une fonction interne qui est ensuite distribuée à la fonction KSDISPATCH_TABLE . Le pointeur vers cette table est supposé être le premier élément d’une structure pointée par FsContext dans l’objet file de l’IRP spécifique en cours de distribution. Les identificateurs de fonction principale valides sont répertoriés.
Identificateur | Description |
---|---|
IRP_MJ_CREATE | Create IRP. Dans cette instance, une demande de création peut être utilisée pour créer une nouvelle instance d’un filtre ou pour créer un objet tel qu’une épingle sous un filtre ou une horloge sous une broche. Cela suppose que le premier élément de l’étendue de l’objet pilote contient une structure KSDEVICE_HEADER utilisée pour rechercher le type d’objet à créer, en fonction du nom passé. Si un objet de fichier parent est spécifié, cet objet est KSDISPATCH_TABLE. ChildCreateHandlerTable dans le FsContext est examiné pour déterminer le gestionnaire à utiliser pour créer ou utiliser la table de l’objet d’appareil. |
IRP_MJ_CLOSE | Fermez IRP. |
IRP_MJ_DEVICE_CONTROL | IRP de contrôle d’appareil. |
IRP_MJ_READ | Lire IRP. |
IRP_MJ_WRITE | Écrire un IRP. |
IRP_MJ_FLUSH_BUFFERS | Videz IRP. |
IRP_MJ_QUERY_SECURITY | Interroger les informations de sécurité. |
IRP_MJ_SET_SECURITY | Définissez les informations de sécurité. |
KSDISPATCH_FASTIO | Cet indicateur peut être ajouté à l’identificateur MajorFunction afin de spécifier que l’entrée fait référence à la table de répartition d’E/S rapide, plutôt qu’à l’entrée de fonction principale classique. Cela est valide uniquement avec IRP_MJ_READ, IRP_MJ_WRITE ou IRP_MJ_DEVICE_CONTROL. Le pilote est chargé de créer la table DriverObject-FastIoDispatch>. Comme avec la répartition normale, si un gestionnaire est défini pour l’objet pilote, tous les objets fichier doivent gérer ces E/S rapides, même si l’entrée pointe simplement vers DispatchFastIoDeviceControlFailure ou une fonction similaire. |
Valeur retournée
Retourne STATUS_SUCCESS si l’identificateur MajorFunction est valide.
Remarques
Si un gestionnaire de fonction principale est défini pour un objet pilote, tous les objets fichier doivent gérer cette fonction principale, même si l’entrée pointe simplement vers KsDispatchInvalidDeviceRequest.
KSDISPATCH_FASTIO
Cet indicateur peut être utilisé pour spécifier que l’entrée d’E/S rapide doit être définie plutôt que l’entrée basée sur IRP.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | ks.h (inclure Ks.h) |
Bibliothèque | Ks.lib |