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 dans lequel retourner un pointeur vers l’en-tête initialisé.

[in] ItemsCount

Spécifie le nombre de sous-éléments dans le ItemsList. Cela doit être égal à zéro si une ItemsList n’est pas passée.

[in, optional] ItemsList

Optionnel. 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 de retour

La fonction KsAllocateDeviceHeader retourne STATUS_SUCCESS si elle réussit ou STATUS_INSUFFICIENT_RESOURCES si elle ne parvient pas à allouer les ressources nécessaires.

Remarques

La fonction KsAllocateDeviceHeader alloue de la mémoire pour la structure KSDEVICE_HEADER pour 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.

Si des sous-objets existent 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 la liste des sous-objets KSOBJECT_CREATE_ITEM tant qu’ils n’ont pas appelé KsFreeDeviceHeader. L’échec de cette opération peut entraîner une condition de vérification des bogues.

Exigences

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

Voir aussi

KSOBJECT_CREATE_ITEM

KsFreeDeviceHeader