Partager via


Fonction de rappel PFNKSALLOCATOR (ks.h)

Les minidrivers peuvent éventuellement fournir une fonction de rappel de type PFNKSALLOCATOR en tant que paramètre dans les appels à KsEnableEventWithAllocator, KsPropertyHandlerWithAllocatoret KsMethodHandlerWithAllocator.

Syntaxe

PFNKSALLOCATOR Pfnksallocator;

NTSTATUS Pfnksallocator(
  [in] PIRP Irp,
  [in] ULONG BufferSize,
  [in] BOOLEAN InputOperation
)
{...}

Paramètres

[in] Irp

Spécifie l’IRP pour laquelle la demande d’allocation de mémoire tampon est effectuée.

[in] BufferSize

Spécifie la taille de la mémoire tampon nécessaire. Cette taille couvre tous les paramètres de la requête.

[in] InputOperation

Défini sur TRUE s’il s’agit d’une opération d’entrée, ce qui signifie qu’en cas de retour réussi, le champ Irp->IoStatus.Information contiendra le nombre d’octets à copier dans la mémoire tampon d’entrée d’origine.

Valeur de retour

Retourne STATUS_SUCCESS si la requête est gérée. Sinon, retourne un code d’erreur approprié.

Remarques

En règle générale, la mémoire du pool est utilisée pour les allocations de mémoires tampons. Cela permet aux filtres qui transmettent des requêtes d’événement, de propriété et de méthode directement au matériel pour éviter des copies de données supplémentaires en leur permettant de fournir la mémoire tampon dans laquelle ces données sont placées par les fonctions de gestion standard. Par conséquent, un filtre peut avoir des blocs de mémoire qui ont déjà été mappés à un adaptateur à partir duquel les allocations de mémoire tampon peuvent se produire.

Étant donné que cette mémoire n’est probablement pas une mémoire allouée par un pool classique, le filtre doit effectuer le nettoyage de la mémoire tampon à l’achèvement de l’Irp. Cela signifie que pour les opérations d’entrée à partir du mode utilisateur qui ne sont pas synchrones, l’allocateur doit allouer un MDL pour la mémoire tampon de destination, la sonde et le verrouiller, et récupérer une adresse système. Cette opération doit être effectuée pour permettre la copie des données renvoyées dans la mémoire tampon d’origine.

Exigences

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