次の方法で共有


WdfIoResourceListInsertDescriptor 関数 (wdfresource.h)

[KMDF にのみ適用]

WdfIoResourceListInsertDescriptor メソッドは、リソース記述子をリソース要件リストの論理構成に挿入します。

構文

NTSTATUS WdfIoResourceListInsertDescriptor(
  [in] WDFIORESLIST            ResourceList,
  [in] PIO_RESOURCE_DESCRIPTOR Descriptor,
  [in] ULONG                   Index
);

パラメーター

[in] ResourceList

デバイスのハードウェア リソースの論理構成を表すフレームワーク リソース範囲リスト オブジェクトへのハンドル。

[in] Descriptor

ハードウェア リソースを記述する IO_RESOURCE_DESCRIPTOR 構造体へのポインター。

[in] Index

ResourceList が指定する論理構成に既に存在するリソース記述子のセットのインデックスとして使用される 0 から始まる値。 論理構成の末尾にリソース記述子を追加するには、 WDF_INSERT_AT_ENDまたは WdfIoResourceListGetCount からの戻り値を指定します。

戻り値

操作が成功した場合、WdfIoResourceListInsertDescriptor はSTATUS_SUCCESSを返します。 それ以外の場合、このメソッドは次のいずれかの値を返す可能性があります。

リターン コード 説明
STATUS_INVALID_PARAMETER
無効なパラメーターが指定されました。
STATUS_ACCESS_DENIED
ドライバーは、論理構成に記述子を追加できませんでした。
STATUS_INSUFFICIENT_RESOURCES
フレームワークは、記述子を格納する領域を割り当てませんでした。
STATUS_ARRAY_BOUNDS_EXCEEDED
Index パラメーターが指定する値が大きすぎます。
 

ドライバーが無効なオブジェクト ハンドルを提供すると、システム バグ チェックが発生します。

注釈

WdfIoResourceListInsertDescriptor メソッドは、Descriptor パラメーターが指すリソース記述子を、ResourceList パラメーターが指定する論理構成に、Index 値が識別するリソース記述子の前に挿入します。

論理構成の末尾にリソース記述子を追加するには、Index 値に WDF_INSERT_AT_END または WdfIoResourceListGetCount からの戻り値を指定します。 または、 WdfIoResourceListAppendDescriptor メソッドを使用します。

フレームワークは 、IO_RESOURCE_DESCRIPTOR 構造体の内容を内部ストレージにコピーするため、 WdfIoResourceListInsertDescriptor を呼び出すドライバー ルーチンは、構造体をローカルに割り当てることができます。 ドライバーが WdfIoResourceListInsertDescriptor を呼び出した後、ドライバーは IO_RESOURCE_DESCRIPTOR 構造体を再利用できます。

リソース要件リストと論理構成の詳細については、「 Framework-Based ドライバーのハードウェア リソース」を参照してください。

次のコード例では、リソース記述子を初期化し、論理構成の末尾に記述子を追加します。

IO_RESOURCE_DESCRIPTOR descriptor;

RtlZeroMemory(&descriptor, sizeof(descriptor));

descriptor.Option = 0;
descriptor.Type = CmResourceTypePort;
descriptor.ShareDisposition = CmResourceShareDeviceExclusive;
descriptor.Flags = CM_RESOURCE_PORT_IO|CM_RESOURCE_PORT_16_BIT_DECODE;
descriptor.u.Port.Length = 1;
descriptor.u.Port.Alignment = 0x01;
descriptor.u.Port.MinimumAddress.QuadPart = 0;
descriptor.u.Port.MaximumAddress.QuadPart = 0xFFFF;

status = WdfIoResourceListInsertDescriptor(
                                           logConfig,
                                           &descriptor,
                                           WDF_INSERT_AT_END
                                           );
if (!NT_SUCCESS(status)) {
    return status;
}

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
Header wdfresource.h (Wdf.h を含む)
Library Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。
IRQL <=DISPATCH_LEVEL
DDI コンプライアンス規則 DriverCreate(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf)

こちらもご覧ください

IO_RESOURCE_DESCRIPTOR

WdfIoResourceListAppendDescriptor