次の方法で共有


IRP_MN_QUERY_DEVICE_TEXT

PnP マネージャーは、この IRP を使用して、デバイスの記述や場所の情報を取得します。

バス ドライバーは、バスがこの情報をサポートしている場合、子デバイスに対してこの要求を処理する必要があります。 ファンクション ドライバーとフィルター ドライバーは、この IRP を処理しません。

0x0C

主要なコード

IRP_MJ_PNP

送信時

PnP マネージャーは、デバイスが列挙されると、これらの IRP のうち 2 つを送信します。1 つはデバイスの説明のクエリを実行し、もう 1 つは位置情報のクエリを実行します。

PnP マネージャーは、任意のスレッド コンテキストで、IRQL PASSIVE_LEVEL でこの IRP を送信します。

入力パラメーター

IO_STACK_LOCATION 構造体の Parameters.QueryDeviceText.DeviceTextType メンバーは、要求される文字列を指定する DEVICE_TEXT_TYPE 値です。 DEVICE_TEXT_TYPE に指定できる値には、DeviceTextDescriptionDeviceTextLocationInformation があります。

Parameters.QueryDeviceText.LocaleId は、要求されたテキストのロケールを指定する LCID です。

出力パラメーター

I/O 状態ブロックで返されます。

I/O 状態ブロック

ドライバーは、Irp->IoStatus.Status を STATUS_SUCCESS に設定するか、適切なエラー状態に設定します。

成功した場合、バス ドライバーは、要求された情報を含む WCHAR バッファーを格納するメモリの、ドライバーによって割り当てられたブロックへのポインターに Irp->IoStatus.Information を設定します。 エラーの場合は、バス ドライバーは Irp->IoStatus.Information を 0 に設定します。

操作

バス ドライバーは、子デバイスのデバイスの記述を返すようにすることを強くお勧めします。 この文字列は、デバイスの INF の一致が見つからない場合は、[新しいハードウェアの検出] ポップアップ ウィンドウに表示されます。

バス ドライバーには、子デバイスの LocationInformation を返すことも推奨されますが、この情報は省略可能です。 この文字列の書式は、バスによって異なります。 デバイス マネージャーは、デバイスの [全般プロパティ] タブにこの文字列を表示します。 ベンダーは、ユーザーとサポート担当者に有用な情報を伝える文字列を選択する必要があります。 たとえば、PCI の場合、文字列にはバス、デバイス、および関数が含まれます。 PC カードの場合、文字列にはスロットが含まれます。

バス ドライバーは、この IRP に応答して情報を返す場合、ページングされたメモリからヌル終端 Unicode 文字列を割り当てます。 不要になると、PnP マネージャーはこの文字列を解放します。

デバイスが記述や場所の情報を提供しない場合、デバイスの親バス ドライバーは Irp->IoStatus.Status または Irp->IoStatus.Information を変更せずに、IRP (IoCompleteRequest) を完了します。

ファンクション ドライバーとフィルター ドライバーは、この IRP を処理しません。Irp->IoStatus に変更を加えず、次の下位ドライバーに IRP を渡します。

ロケールごとに異なるテキスト文字列をサポートするバスのドライバーは、デバイスで明示的にサポートされていない言語の要求を処理できる必要があります。 このような状況では、バス ドライバーはロケールに最も近い一致を返すか、フォールバックして、サポートされている適切なロケール文字列を返す必要があります。

プラグ アンド プレイのマイナー IRP の処理に関する一般的な規則については、「プラグ アンド プレイ」を参照してください。

この IRP の送信

システムで使用するために予約されています。 ドライバーは、この IRP を送信することはできません。

要件

ヘッダー

Wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)