Partager via


KsMethodHandlerWithAllocator, fonction (ks.h)

Les fonctions KsMethodHandlerWithAllocator effectuent la même gestion que KsMethodHandler, avec les mêmes restrictions, mais autorisent l’utilisation d’un rappel d’allocator facultatif 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 d’une 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 indicateur 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 demande de méthode en cours de traitement.

[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

Pointe éventuellement vers une fonction d’allocation qui sera utilisée pour allouer de la mémoire afin de 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 afin de stocker des informations privées. Si ce paramètre est égal à zéro, la taille de structure est supposée être normale. Si elle est supérieure ou égale à une structure d’élément de méthode, la macro KSMETHOD_ITEM_IRP_STORAGE peut être utilisée pour retourner 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 retournée

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 le IO_STATUS_BLOCK. Champ d’informations du PIRP. Élément IoStatus dans l’IRP sur 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 le 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.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête ks.h (inclure Ks.h)
Bibliothèque Ks.lib