KsAllocateExtraData, fonction (ks.h)
La fonction KsAllocateExtraData est utilisée avec les irps de streaming pour allouer une mémoire tampon pour 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 éventuellement ê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é passé précédemment à KsProbeStreamIrp pour mettre en mémoire tampon les en-têtes.
[in] ExtraSize
Spécifie la taille, en octets, de mémoire supplémentaire à allouer entre chaque en-tête de flux. Cette valeur doit être alignable 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. Cela doit être libéré par l’appelant.
[out] ExtraBuffer
Pointe vers un pointeur alloué par l’appelant qui, lors de la réussite de l’exécution, 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. Cela doit être libéré par l’appelant.
Valeur de retour
La fonction KsAllocateExtraData retourne STATUS_SUCCESS si elle réussit, ou renvoie une ressource ou une erreur d’accès.
Remarques
Lorsque KsAllocateExtraData se termine correctement, un pointeur vers un bloc de mémoire est retourné qui contient les deux en-têtes de données de flux à partir de l’IRP, spécifiés à 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 de ExFreePool.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | ks.h (include Ks.h) |
bibliothèque | Ks.lib |
IRQL | < DISPATCH_LEVEL |