次の方法で共有


WdfIoResourceRequirementsListInsertIoResList 関数 (wdfresource.h)

[KMDF にのみ適用]

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

構文

NTSTATUS WdfIoResourceRequirementsListInsertIoResList(
  [in] WDFIORESREQLIST RequirementsList,
  [in] WDFIORESLIST    IoResList,
  [in] ULONG           Index
);

パラメーター

[in] RequirementsList

デバイスのリソース要件リストを表すフレームワーク resource-requirements-list オブジェクトへのハンドル。

[in] IoResList

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

[in] Index

RequirementsList が指定するリソース要件リストに既に含まれている論理構成のセットのインデックスとして使用される 0 から始まる値。 リストの末尾に構成を追加するには、 WDF_INSERT_AT_ENDまたは WdfIoResourceRequirementsListGetCount からの戻り値を指定します。

戻り値

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

リターン コード 説明
STATUS_INVALID_PARAMETER
指定された無効なパラメーター。
STATUS_INVALID_DEVICE_REQUEST
指定した resource-requirements-list オブジェクトは、指定された resource-range-list オブジェクトを所有していません。
STATUS_INSUFFICIENT_RESOURCES
フレームワークは、resource-range-list オブジェクトを格納する領域を割り当てませんでした。
STATUS_ARRAY_BOUNDS_EXCEEDED
Index パラメーターに指定された値が大きすぎます。
 

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

注釈

WdfIoResourceRequirementsListInsertIoResList メソッドは、Index 値が識別する論理構成の前に、IoResList パラメーターが指定する論理構成を RequirementsList パラメーターが指定するリソース要件リストに挿入します。

リソース要件リストの末尾に論理構成を追加するには、WDF_INSERT_AT_ENDまたは WdfIoResourceRequirementsListGetCount からの戻り値を Index 値として使用します。 または、 WdfIoResourceRequirementsListAppendIoResList メソッドを 使用します。

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

次のコード例は、 EvtDeviceResourceRequirementsQuery コールバック関数で 2 つの空の論理構成を作成し、それらをリソース要件リストに追加する方法を示しています。

NTSTATUS
Example_EvtDeviceResourceRequirementsQuery(
    IN WDFDEVICE Device,
    IN WDFIORESREQLIST RequirementsList
    )
{
    NTSTATUS  status;
    WDFIORESLIST  logConfig1;
    WDFIORESLIST  logConfig2;

    status = WdfIoResourceListCreate(
                                     RequirementsList,
                                     WDF_NO_OBJECT_ATTRIBUTES,
                                     &logConfig1
                                     );
    if (!NT_SUCCESS(status)) {
        return status;
    }

    status = WdfIoResourceRequirementsListAppendIoResList(
                                             RequirementsList,
                                             logConfig1
                                             );
    if (!NT_SUCCESS(status)) {
        return status;
    }

    status = WdfIoResourceListCreate(
                                     RequirementsList,
                                     WDF_NO_OBJECT_ATTRIBUTES,
                                     &logConfig2
                                     );
    if (!NT_SUCCESS(status)) {
        return status;
    }
    status = WdfIoResourceRequirementsListInsertIoResList(
                                             RequirementsList,
                                             logConfig2,
                                             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)

こちらもご覧ください

WdfIoResourceListCreate

WdfIoResourceRequirementsListAppendIoResList