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 バス上のデバイスをサポートするファンクション ドライバーは、DevicePropertyBusNumber、DevicePropertyBusTypeGuid、および DevicePropertyLegacyBusType プロパティを使用してバスを区別できます。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 以降で使用できます。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 を する | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |
関連項目
ExAllocatePoolWithTag の