KsPropertyHandlerWithAllocator, fonction (ks.h)

Le KsPropertyHandlerWithAllocator effectue la même gestion que KsPropertyHandler, 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. IRP_BUFFERED_IO et les indicateurs de IRP_DEALLOCATE_BUFFER ne sont pas définis lors de l’utilisation d’un allocateur personnalisé.

Syntaxe

C++
KSDDKAPI NTSTATUS KsPropertyHandlerWithAllocator(
  [in]           PIRP                 Irp,
  [in]           ULONG                PropertySetsCount,
  [in]           const KSPROPERTY_SET *PropertySet,
  [in, optional] PFNKSALLOCATOR       Allocator,
  [in, optional] ULONG                PropertyItemSize
);

Paramètres

[in] Irp

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

[in] PropertySetsCount

Spécifie le nombre de jeux de propriétés passés.

[in] PropertySet

Spécifie le pointeur vers un tableau d’informations de jeu de propriétés.

[in, optional] Allocator

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

[in, optional] PropertyItemSize

Contient éventuellement la taille de chaque structure KSPROPERTY_ITEM dans les propriétés. L’élément de propriété 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 propriété, la macro KSPROPERTY_ITEM_IRP_STORAGE peut être utilisée pour renvoyer un pointeur vers l’élément de propriété 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 KsPropertyHandler retourne STATUS_SUCCESS en cas de réussite, ou une erreur spécifique à la propriété gérée en cas d’échec. La fonction définit le membre Irp->IoStatus.Information, soit en le définissant sur zéro en raison d’une erreur interne, soit par le biais d’un gestionnaire de propriétés qui le définit. La fonction ne définit pas le membre lrp->IoStatus.Status ni ne termine 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.

Remarques

KsPropertyHandlerWithAllocator place un pointeur vers la structure de KSPROPERTY_ITEM appropriée dans le paramètre Irp->Tail.Overlay.DriverContext dans l’IRP. Le minidriver peut utiliser la macro KSPROPERTY_ITEM_IRP_STORAGE, définie dans ks.h, pour accéder à ce pointeur.

Exigences

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

Voir aussi

KsFastPropertyHandler

KsPropertyHandler