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 à 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