Partager via


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

Voir aussi

KSOBJECT_CREATE_ITEM

KsFreeDeviceHeader