Поделиться через


Функция KsAllocateDeviceHeader (ks.h)

Функция KsAllocateDeviceHeader выделяет и инициализирует необходимый заголовок расширения устройства.

Синтаксис

KSDDKAPI NTSTATUS KsAllocateDeviceHeader(
  [out]          KSDEVICE_HEADER       *Header,
  [in]           ULONG                 ItemsCount,
  [in, optional] PKSOBJECT_CREATE_ITEM ItemsList
);

Параметры

[out] Header

Указывает на расположение, в котором возвращается указатель на инициализированный заголовок.

[in] ItemsCount

Указывает количество вложенных элементов в ItemsList. Это значение должно быть равно нулю, если ItemsList не передается.

[in, optional] ItemsList

Необязательный. Указывает на структуру KSOBJECT_CREATE_ITEM для каждого дочернего сайта. Если дочерних элементов нет, это значение должно быть null и ItemsCount должно быть равно нулю.

Возвращаемое значение

Функция KsAllocateDeviceHeader возвращает STATUS_SUCCESS в случае успешного выполнения или STATUS_INSUFFICIENT_RESOURCES, если не удается выделить необходимые ресурсы.

Замечания

Функция KsAllocateDeviceHeader выделяет память для структуры KSDEVICE_HEADER устройства. Если заголовок больше не нужен, драйвер должен вызвать функцию KsFreeDeviceHeader, чтобы освободить выделенную память.

Если подобъекты существуют для данного устройства, драйвер должен перед вызовом KsAllocateDeviceHeader, выделить буфер страницы или непагаченной памяти достаточного размера для хранения структуры KSOBJECT_CREATE_ITEM для каждого подобъекта. Например:

/* 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) ;

Драйверы не должны освободить память, выделенную для вложенного списка KSOBJECT_CREATE_ITEM, пока не вызовите KsFreeDeviceHeader. Сбой этого может привести к возникновению условия проверки ошибок.

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка ks.h (include Ks.h)
библиотеки Ks.lib
IRQL < DISPATCH_LEVEL

См. также

KSOBJECT_CREATE_ITEM

KsFreeDeviceHeader