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, KsPropertyHandlerWithAllocator et KsMethodHandlerWithAllocator.

Syntaxe

PFNKSALLOCATOR Pfnksallocator;

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

Paramètres

[in] Irp

Spécifie l’IRP pour lequel 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 demande.

[in] InputOperation

Définissez 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 vers la mémoire tampon d’entrée d’origine.

Valeur retournée

Retourne STATUS_SUCCESS si la demande 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émoire tampon. Cela permet aux filtres qui transmettent des requêtes d’événement, de propriété et de méthode directement au matériel afin d’é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 des allocations de mémoire tampon peuvent se produire.

Étant donné que cette mémoire n’est probablement pas de la mémoire classique allouée au pool, 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 du mode utilisateur qui ne sont pas synchrones, l’allocateur doit allouer un MDL pour la mémoire tampon de destination, le sonder et le verrouiller, puis récupérer une adresse système. Cette opération doit être effectuée afin d’activer la copie des données de retour dans la mémoire tampon d’origine.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête ks.h (inclure Ks.h)