共用方式為


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

在呼叫 KsFreeDeviceHeader 之前,驅動程式不得釋放為子物件KSOBJECT_CREATE_ITEM清單配置的記憶體。 若無法這麼做,可能會導致錯誤檢查條件。

規格需求

需求
目標平台 Universal
標頭 ks.h (包含 Ks.h)
程式庫 Ks.lib
IRQL < DISPATCH_LEVEL

另請參閱

KSOBJECT_CREATE_ITEM

KsFreeDeviceHeader