KsAllocateExtraData, fonction (ks.h)
La fonction KsAllocateExtraData est utilisée avec les irps de streaming pour allouer une mémoire tampon afin de contenir des données d’en-tête supplémentaires. Un pointeur vers la mémoire tampon allouée est retourné et la mémoire tampon doit finalement être libérée par l’appelant.
Syntaxe
KSDDKAPI NTSTATUS KsAllocateExtraData(
[in, out] PIRP Irp,
[in] ULONG ExtraSize,
[out] PVOID *ExtraBuffer
);
Paramètres
[in, out] Irp
Spécifie l’IRP contenant les en-têtes de flux. L’IRP doit avoir été précédemment passé à KsProbeStreamIrp pour mettre en mémoire tampon les en-têtes.
[in] ExtraSize
Spécifie la taille, en octets, de la mémoire supplémentaire à allouer entre chaque en-tête de flux. Cette valeur doit être alignée sur une limite de huit octets. Une copie des en-têtes est placée dans la mémoire tampon retournée, avec la taille de données supplémentaire insérée entre chaque en-tête. Celui-ci doit être libéré par l’appelant.
[out] ExtraBuffer
Pointe vers un pointeur alloué par l’appelant qui, une fois l’exécution réussie, pointe vers une mémoire tampon allouée par le système contenant les en-têtes de flux et le remplissage demandé entre eux. Celui-ci doit être libéré par l’appelant.
Valeur retournée
La fonction KsAllocateExtraData retourne STATUS_SUCCESS si elle réussit, ou renvoie une erreur de ressource ou d’accès.
Remarques
Lorsque KsAllocateExtraData se termine correctement, un pointeur vers un bloc de mémoire est retourné qui contient à la fois les en-têtes de données de flux à partir de l’IRP, spécifié à Irp, et le remplissage entre chaque en-tête de taille spécifiée dans ExtraSize. Voici un exemple de mémoire tampon résultante :
Lorsque la mémoire tampon supplémentaire n’est plus nécessaire, la mémoire doit être libérée à l’aide d’ExFreePool.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | ks.h (inclure Ks.h) |
Bibliothèque | Ks.lib |
IRQL | < DISPATCH_LEVEL |