Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 |