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 un KSDISPATCH_TABLE contenu dans l’en-tête d’objet opaque pour être le premier élément d’une structure pointée par un FsContext dans un objet de fichier. La répartition suppose que la table et structure de 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 de pilote dont la fonction principale doit être gérée.
[in] MajorFunction
Spécifie l’identificateur de fonction principal à gérer. Cela définit le pointeur de fonction principal dans l’objet pilote sur une fonction interne qui répartit ensuite vers 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 de fichier de l’IRP spécifique distribué. Les identificateurs de fonction principale valides sont répertoriés.
Identificateur | Description |
---|---|
IRP_MJ_CREATE | Créez un IRP. Dans cette instance, une demande de création peut être utilisée pour créer une 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é, le KSDISPATCH_TABLE de cet objet. ChildCreateHandlerTable dans le FsContext est examiné pour déterminer le gestionnaire à utiliser pour la création ou utiliser la table de l’objet appareil. |
IRP_MJ_CLOSE | Fermez IRP. |
IRP_MJ_DEVICE_CONTROL | IRP de contrôle d’appareil. |
IRP_MJ_READ | Lisez IRP. |
IRP_MJ_WRITE | Écrivez IRP. |
IRP_MJ_FLUSH_BUFFERS | Vider 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 pour spécifier que l’entrée fait référence à la table de distribution d’E/S rapide, plutôt que l’entrée principale classique. Cela est valide uniquement avec IRP_MJ_READ, IRP_MJ_WRITE ou IRP_MJ_DEVICE_CONTROL. Le pilote est responsable de la création de la table DriverObject->FastIoDispatch. Comme avec la répartition normale, si un gestionnaire est défini pour l’objet de pilote, tous les objets de fichier doivent gérer ces E/S rapides, même si l’entrée pointe simplement vers DispatchFastIoDeviceControlFailure ou une fonction similaire. |
Valeur de retour
Retourne STATUS_SUCCESS si l’identificateur MajorFunction est valide.
Remarques
Si un gestionnaire de fonction principal est défini pour un objet de pilote, tous les objets de 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.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | ks.h (include Ks.h) |
bibliothèque | Ks.lib |