次の方法で共有


IoGetDeviceProperty 関数 (wdm.h)

IoGetDeviceProperty ルーチンは、構成情報とその PDO の名前などのデバイスに関する情報を取得します。

構文

NTSTATUS IoGetDeviceProperty(
  [in]            PDEVICE_OBJECT           DeviceObject,
  [in]            DEVICE_REGISTRY_PROPERTY DeviceProperty,
  [in]            ULONG                    BufferLength,
  [out, optional] PVOID                    PropertyBuffer,
  [out]           PULONG                   ResultLength
);

パラメーター

[in] DeviceObject

クエリ対象のデバイスの物理デバイス オブジェクト (PDO) へのポインター。

[in] DeviceProperty

取得するデバイス プロパティを識別する DEVICE_REGISTRY_PROPERTY型指定された列挙子。

[in] BufferLength

呼び出し元が指定した PropertyBuffer のサイズバイト単位で指定します。

[out, optional] PropertyBuffer

プロパティ情報を受け取る呼び出し元が指定したバッファーへのポインター。 バッファーはページング可能なメモリから割り当てることができます。 バッファーの種類は、DeviceProperty (上記参照) によって決まります。

[out] ResultLength

PropertyBuffer で返されるプロパティ情報のサイズ受け取る ULONG へのポインター。 IoGetDeviceProperty STATUS_BUFFER_TOO_SMALLを返す場合は、このパラメーターを必要なバッファー長に設定します。

戻り値

IoGetDeviceProperty は、呼び出しが成功した場合にSTATUS_SUCCESSを返します。 考えられるエラー戻り値は次のとおりです。

リターン コード 形容
STATUS_BUFFER_TOO_SMALL PropertyBuffer のバッファーが小さすぎました。 ResultLength は、必要なバッファー長を指します。
STATUS_INVALID_PARAMETER_2 指定 DeviceProperty は、このルーチンによって処理されるプロパティの 1 つではありません。
STATUS_INVALID_DEVICE_REQUEST 指定された DeviceObject が有効な PDO ポインターではなかったことを示している可能性があります。

備考

IoGetDeviceProperty は、レジストリからデバイスのセットアップ情報を取得します。 このルーチンは、レジストリに直接アクセスするのではなく、プラットフォーム間の違いとレジストリ構造の変更の可能性からドライバーを絶縁するために使用します。

多くの DeviceProperty 要求では、IoGetDeviceProperty する 2 つ以上の呼び出しを実行して、必要な BufferLengthを特定できます。 最初の呼び出しでは、最適な推測値を使用する必要があります。 戻り値の状態がSTATUS_BUFFER_TOO_SMALL場合、ドライバーは現在のバッファーを解放し、ResultLength で返されるサイズのバッファー割り当て、IoGetDeviceProperty 再度呼び出す必要があります。 一部のセットアップ プロパティは動的であるため、必要なサイズが返されてからドライバーがこのルーチンを再度呼び出すまでの間に、データ サイズが変更される可能性があります。 そのため、ドライバーは、戻り状態がSTATUS_BUFFER_TOO_SMALLされないまで実行されるループ内 IoGetDeviceProperty を呼び出す必要があります。

レガシ バスと PnP バス上のデバイスをサポートするファンクション ドライバーは、DevicePropertyBusNumberDevicePropertyBusTypeGuid、および DevicePropertyLegacyBusType プロパティを使用してバスを区別できます。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 以降で使用できます。
ターゲット プラットフォーム 万国
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 する HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

関連項目

CM_RESOURCE_LIST

DEVICE_REMOVAL_POLICY

ExAllocatePoolWithTag

GUID

INTERFACE_TYPE

IO_RESOURCE_REQUIREMENTS_LIST