Partager via


KsCreateDefaultAllocatorEx, fonction (ks.h)

Crée un allocateur par défaut qui utilise le pool de mémoire spécifié et associe le IoGetCurrentIrpStackLocation(pIrp)->FileObject à cet allocator à l’aide d’une table de répartition interne (KSDISPATCH_TABLE).

Syntaxe

KSDDKAPI NTSTATUS KsCreateDefaultAllocatorEx(
  [in]           PIRP                     Irp,
  [in, optional] PVOID                    InitializeContext,
  [in, optional] PFNKSDEFAULTALLOCATE     DefaultAllocate,
  [in, optional] PFNKSDEFAULTFREE         DefaultFree,
  [in, optional] PFNKSINITIALIZEALLOCATOR InitializeAllocator,
  [in, optional] PFNKSDELETEALLOCATOR     DeleteAllocator
);

Paramètres

[in] Irp

Contient l’IRP avec la demande de création d’allocator en cours de traitement.

[in, optional] InitializeContext

Contient éventuellement un contexte à utiliser avec un allocateur externe. Cela est utilisé uniquement comme contexte d’initialisation pour le rappel Facultatif InitializeAllocator lors de la création d’un contexte d’allocator. Le paramètre n’est pas utilisé autrement. Si aucun allocateur externe n’est fourni, ce paramètre doit être défini sur NULL .

[in, optional] DefaultAllocate

Contient éventuellement une fonction d’allocation externe utilisée à la place de l’allocation de pool par défaut. S’il s’agit NULL, l’allocation par défaut est utilisée.

[in, optional] DefaultFree

Contient éventuellement une fonction libre externe utilisée à la place de l’allocation de pool par défaut. Si aucun allocateur externe n’est fourni, ce paramètre doit être défini sur NULL .

[in, optional] InitializeAllocator

Contient éventuellement une fonction d’initialisation d’allocator externe à laquelle le paramètre InitializeContext est passé. Cette fonction est censée retourner un contexte d’allocateur basé sur le trame de l’allocateur. Si aucun allocateur externe n’est fourni, ce paramètre doit être défini sur NULL .

[in, optional] DeleteAllocator

Contient éventuellement une fonction de suppression d’allocator externe utilisée pour les allocateurs externes. Si aucun allocateur externe n’est fourni, ce paramètre doit être défini sur NULL .

Valeur de retour

Retourne STATUS_SUCCESS, sinon une erreur lors de l’échec de création d’un allocateur par défaut. Ne termine pas l’IRP ou définit l’état dans l’IRP.

Remarques

Avant d’appeler cette routine, la macro KSCREATE_ITEM_IRP_STORAGE(Irp) doit retourner un pointeur vers la structure KSOBJECT_CREATE_ITEM qui est l’élément de création pour cet allocateur. KsCreateDefaultAllocatorEx définit FsContext pour pointer vers la valeur de retour de cette macro. Par conséquent, FsContext peut être utilisé ultérieurement pour les requêtes de descripteur de sécurité ou les modifications.

Vous trouverez des (Irp) KSCREATE_ITEM_IRP_STORAGE(Irp) et des macros associées dans ks.h.

Exigences

Exigence Valeur
plateforme cible Universel
d’en-tête ks.h (include Ks.h)
bibliothèque Ks.lib