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é.
KSDDKAPI NTSTATUS KsPropertyHandlerWithAllocator(
[in] PIRP Irp,
[in] ULONG PropertySetsCount,
[in] const KSPROPERTY_SET *PropertySet,
[in, optional] PFNKSALLOCATOR Allocator,
[in, optional] ULONG PropertyItemSize
);
[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.
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.
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.
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | ks.h (include Ks.h) |