次の方法で共有


WdfIoResourceListAppendDescriptor 関数 (wdfresource.h)

[KMDF にのみ適用]

WdfIoResourceListAppendDescriptor メソッドは、リソース要件リストの 論理構成の末尾にリソース記述子を追加します。

構文

NTSTATUS WdfIoResourceListAppendDescriptor(
  [in] WDFIORESLIST            ResourceList,
  [in] PIO_RESOURCE_DESCRIPTOR Descriptor
);

パラメーター

[in] ResourceList

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

[in] Descriptor

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

戻り値

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

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

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

備考

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

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

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

IO_RESOURCE_DESCRIPTOR  descriptor;
NTSTATUS  status;
WDFIORESLIST  logConfig;

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

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

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 = WdfIoResourceListAppendDescriptor(
                                           logConfig,
                                           &descriptor
                                           );

必要条件

要件 価値
ターゲット プラットフォーム 万国
最小 KMDF バージョン 1.0
ヘッダー wdfresource.h (Wdf.h を含む)
ライブラリ Wdf01000.sys (フレームワーク ライブラリのバージョン管理を参照)。
IRQL <=DISPATCH_LEVEL
DDI コンプライアンス規則 する DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

関連項目

IO_RESOURCE_DESCRIPTOR

WdfIoResourceListCreate

WdfIoResourceListInsertDescriptor