KsAllocateDeviceHeader, fonction (ks.h)
La fonction KsAllocateDeviceHeader alloue et initialise l’en-tête d’extension d’appareil requis.
Syntaxe
KSDDKAPI NTSTATUS KsAllocateDeviceHeader(
[out] KSDEVICE_HEADER *Header,
[in] ULONG ItemsCount,
[in, optional] PKSOBJECT_CREATE_ITEM ItemsList
);
Paramètres
[out] Header
Pointe vers l’emplacement où retourner un pointeur vers l’en-tête initialisé.
[in] ItemsCount
Spécifie le nombre de sous-éléments dans itemsList. Cette valeur doit être égale à zéro si un ItemsList n’est pas passé.
[in, optional] ItemsList
facultatif. Pointe vers une structure KSOBJECT_CREATE_ITEM pour chaque sous-élément. S’il n’y a pas de sous-éléments, cette valeur doit être NULL et ItemsCount doit être égale à zéro.
Valeur retournée
La fonction KsAllocateDeviceHeader retourne STATUS_SUCCESS en cas de réussite ou STATUS_INSUFFICIENT_RESOURCES si vous ne parvenez pas à allouer les ressources nécessaires.
Remarques
La fonction KsAllocateDeviceHeader alloue de la mémoire pour la structure KSDEVICE_HEADER d’un appareil. Lorsque l’en-tête n’est plus nécessaire, le pilote doit appeler la fonction KsFreeDeviceHeader pour libérer la mémoire allouée.
S’il existe des sous-objets pour un appareil donné, le pilote doit, avant d’appeler KsAllocateDeviceHeader, allouer une mémoire tampon de mémoire paginée ou non paginée de taille suffisante pour contenir une structure KSOBJECT_CREATE_ITEM pour chaque sous-objet. Par exemple :
/* Allocate a buffer for 4 subobjects for a given streaming device */
PKSOBJECT_CREATE_ITEM createBuffer ;
ULONG bufferSize = (sizeof (KSOBJECT_CREATE_ITEM)) * 4 ;
createBuffer = (PKSOBJECT_CREATE_ITEM)
ExAllocatePoolWithTag (PagedPool, bufferSize) ;
Les pilotes ne doivent pas libérer la mémoire allouée pour le sous-objet KSOBJECT_CREATE_ITEM liste tant qu’ils n’ont pas appelé KsFreeDeviceHeader. Si vous ne le faites pas, vous pouvez créer un bogue case activée condition.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
En-tête | ks.h (inclure Ks.h) |
Bibliothèque | Ks.lib |
IRQL | < DISPATCH_LEVEL |