Partager via


KsMethodHandlerWithAllocator, fonction (ks.h)

Les fonctions KsMethodHandlerWithAllocator effectuent la même gestion que KsMethodHandler, avec les mêmes restrictions, mais autorise un rappel d’allocator facultatif à utiliser pour fournir une mémoire tampon pour les paramètres. S’il est utilisé, le filtre peut avoir besoin de libérer la mémoire tampon de manière non conventionnelle. Notez que les indicateurs IRP_BUFFERED_IO et IRP_DEALLOCATE_BUFFER ne sont pas définis lors de l’utilisation d’un allocateur personnalisé.

Syntaxe

KSDDKAPI NTSTATUS KsMethodHandlerWithAllocator(
  [in]           PIRP               Irp,
  [in]           ULONG              MethodSetsCount,
  [in]           const KSMETHOD_SET *MethodSet,
  [in, optional] PFNKSALLOCATOR     Allocator,
  [in, optional] ULONG              MethodItemSize
);

Paramètres

[in] Irp

Spécifie l’IRP avec la requête de méthode gérée.

[in] MethodSetsCount

Indique le nombre de structures de jeu de méthodes passées.

[in] MethodSet

Spécifie le pointeur vers la liste des informations de jeu de méthodes.

[in, optional] Allocator

Si vous le souhaitez, il pointe vers une fonction d’allocation qui sera utilisée pour allouer de la mémoire pour stocker les paramètres de méthode.

[in, optional] MethodItemSize

Contient éventuellement la taille de chaque structure KSMETHOD_ITEM dans chaque liste de méthodes. L’élément de méthode peut être étendu pour stocker des informations privées. Si ce paramètre est égal à zéro, la taille de la structure est supposée être normale. S’il est supérieur ou égal à une structure d’élément de méthode, la macro KSMETHOD_ITEM_IRP_STORAGE peut être utilisée pour renvoyer un pointeur vers l’élément de méthode afin que les données personnalisées puissent être récupérées. Sur les plateformes 64 bits, ce paramètre doit être un multiple de 8.

Valeur de retour

La fonction KsMethodHandler retourne STATUS_SUCCESS en cas de réussite, ou une erreur spécifique à la méthode gérée en cas d’échec. La fonction définit toujours la IO_STATUS_BLOCK. Champ d’informations du PIRP. Élément IoStatus au sein de l’IRP à zéro en raison d’une erreur interne, ou l’élément est défini par un gestionnaire de méthode. La fonction ne définit pas la IO_STATUS_BLOCK. Champ d’état ni terminer l’IRP.

Sur les plateformes 64 bits, si le paramètre PropertyItemSize n’est pas un multiple de 8, STATUS_INVALID_PARAMETER est retourné et l’appel échoue.

Exigences

Exigence Valeur
plateforme cible Universel
d’en-tête ks.h (include Ks.h)
bibliothèque Ks.lib