Partager via


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