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 が渡されない場合、これは 0 にする必要があります。
[in, optional] ItemsList
随意。 各サブ項目のKSOBJECT_CREATE_ITEM構造体を指します。 サブ項目がない場合、この値は NULL 、ItemsCount 0 にする必要があります。
戻り値
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 リスト割り当てられたメモリを解放できません。 これを行わないと、バグ チェック条件が発生する可能性があります。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 万国 |
ヘッダー | ks.h (Ks.h を含む) |
ライブラリ | Ks.lib |
IRQL | < DISPATCH_LEVEL |