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