次の方法で共有


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

関連項目

KSOBJECT_CREATE_ITEM

KsFreeDeviceHeader