Share via


KsPropertyHandlerWithAllocator, fonction (ks.h)

KsPropertyHandlerWithAllocator effectue la même gestion que KsPropertyHandler, avec les mêmes restrictions, mais autorise 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. 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 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 demande de propriété en cours de traitement.

[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

Pointe éventuellement vers une fonction d’allocation utilisée pour allouer de la mémoire afin de 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 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 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 retournée

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 via un gestionnaire de propriétés qui le définit. La fonction ne définit pas le membre lrp-IoStatus.Status> et ne termine pas 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 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.

Configuration requise

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

Voir aussi

KsFastPropertyHandler

KsPropertyHandler