DEVICE_CAPABILITIES 構造体 (wdm.h)
DEVICE_CAPABILITIES構造体では、デバイスの PnP と電源の機能について説明します。 この構造体は、 IRP_MN_QUERY_CAPABILITIES IRP に応答して返されます。
構文
typedef struct _DEVICE_CAPABILITIES {
USHORT Size;
USHORT Version;
ULONG DeviceD1 : 1;
ULONG DeviceD2 : 1;
ULONG LockSupported : 1;
ULONG EjectSupported : 1;
ULONG Removable : 1;
ULONG DockDevice : 1;
ULONG UniqueID : 1;
ULONG SilentInstall : 1;
ULONG RawDeviceOK : 1;
ULONG SurpriseRemovalOK : 1;
ULONG WakeFromD0 : 1;
ULONG WakeFromD1 : 1;
ULONG WakeFromD2 : 1;
ULONG WakeFromD3 : 1;
ULONG HardwareDisabled : 1;
ULONG NonDynamic : 1;
ULONG WarmEjectSupported : 1;
ULONG NoDisplayInUI : 1;
ULONG Reserved1 : 1;
ULONG WakeFromInterrupt : 1;
ULONG SecureDevice : 1;
ULONG ChildOfVgaEnabledBridge : 1;
ULONG DecodeIoOnBoot : 1;
ULONG Reserved : 9;
ULONG Address;
ULONG UINumber;
DEVICE_POWER_STATE DeviceState[POWER_SYSTEM_MAXIMUM];
SYSTEM_POWER_STATE SystemWake;
DEVICE_POWER_STATE DeviceWake;
ULONG D1Latency;
ULONG D2Latency;
ULONG D3Latency;
} DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;
メンバー
Size
構造体のサイズをバイト単位で指定します。 このフィールドは、 IRP_MN_QUERY_CAPABILITIES 要求を送信するコンポーネントによって設定されます。
Version
構造体のバージョン (現在はバージョン 1) を指定します。 このフィールドは、 IRP_MN_QUERY_CAPABILITIES 要求を送信するコンポーネントによって設定されます。
DeviceD1
デバイス ハードウェアが D1 電源状態をサポートするかどうかを指定します。 ドライバーはこの値を変更しないでください。
DeviceD2
デバイス ハードウェアが D2 電源状態をサポートするかどうかを指定します。 ドライバーはこの値を変更しないでください。
LockSupported
デバイスがデバイスの取り出しを禁止する物理デバイスのロックをサポートするかどうかを指定します。 このメンバーは、デバイスからリムーバブル メディアの一部を取り出すのではなく、スロットからデバイスを取り出す処理に関連します。
EjectSupported
システムが PowerSystemWorking 状態の間に、デバイスがソフトウェア制御デバイスの取り出しをサポートするかどうかを指定します。 このメンバーは、デバイスからリムーバブル メディアの一部を取り出すのではなく、スロットからデバイスを取り出す処理に関連します。
Removable
デバイスを直接の親から動的に削除できるかどうかを指定します。 [リムーバブル] が TRUE に設定されている場合、デバイスは親オブジェクトと同じ物理オブジェクトに属していません。
たとえば、多機能プリンター内の USB 複合デバイスに対して リムーバブル が TRUE に設定されている場合、複合デバイスは、ノートブック PC 内の USB ハブなど、その直接の親の物理オブジェクトに属していません。
ほとんどの場合、ファンクション ドライバーではなくバス ドライバーで、デバイスの リムーバブル パラメーターの値を決定する必要があります。 USB デバイスの場合、USB ハブ ドライバーは リムーバブル パラメーターを設定します。 関数ドライバーで変更しないでください。
[リムーバブル] が TRUE に設定されている場合、SurpriseRemovalOK も TRUE に設定されていない限り、デバイスは [ハードウェアの取り外しまたは取り出し] プログラムに表示されます。
DockDevice
デバイスがドッキング周辺機器であるかどうかを指定します。
UniqueID
デバイスのインスタンス ID がシステム全体で一意であるかどうかを指定します。 インスタンス ID がバスのスコープ内でのみ一意である場合、このビットは明確です。 詳細については、「 デバイス識別文字列」を参照してください。
SilentInstall
"互換性のあるドライバーが見つかりません" などの必須のダイアログ ボックスを除き、デバイス マネージャーすべてのインストール ダイアログ ボックスを非表示にするかどうかを指定します。
RawDeviceOK
ファンクション ドライバーがない場合に、基になるバスのドライバーがデバイスを駆動できるかどうかを指定します (たとえば、パススルー モードの SCSI デバイス)。 この動作モードは 生モードと呼ばれます。
SurpriseRemovalOK
Windows がデバイスに IRP_MN_QUERY_REMOVE_DEVICE を送信する前にデバイスが削除された場合に、デバイスのファンクション ドライバーが処理できるかどうかを指定します。 SurpriseRemovalOK が TRUE に設定されている場合、ドライバーの状態に関係なく、デバイスを直接の親から安全に削除できます。
たとえば、標準の USB マウスは、そのハードウェア内の状態を維持しないため、いつでも安全に削除できます。 ただし、ドライバーがメモリに書き込みをキャッシュする外部ハード ディスクは、ドライバーが最初にキャッシュをハードウェアにフラッシュしないと安全に削除できません。
突然の削除をサポートする USB デバイスのドライバーは、IRP がドライバー スタックのバックアップを渡されている場合にのみ TRUE に設定する必要があります。
WakeFromD0
D0 状態の間に、デバイスが外部ウェイク信号に応答できるかどうかを指定します。 ドライバーはこの値を変更しないでください。
WakeFromD1
D1 状態の間に、デバイスが外部ウェイク信号に応答できるかどうかを指定します。 ドライバーはこの値を変更しないでください。
WakeFromD2
D2 状態の間に、デバイスが外部ウェイク信号に応答できるかどうかを指定します。 ドライバーはこの値を変更しないでください。
WakeFromD3
D3 状態の間に、デバイスが外部ウェイク信号に応答できるかどうかを指定します。 ドライバーはこの値を変更しないでください。
HardwareDisabled
このフラグを設定すると、デバイスのハードウェアが無効になっていることを指定します。
デバイスの親バス ドライバーまたはバス フィルター ドライバーは、このようなドライバーがデバイス ハードウェアが無効になっていると判断したときに、このフラグを設定します。
PnP マネージャーは、デバイス が 列挙された直後に IRP IRP_MN_QUERY_CAPABILITIES 1 つを送信し、デバイスの起動後に別のデバイスを送信します。 PnP マネージャーは、デバイスが列挙された直後にこのビットのみをチェックします。 デバイスが起動すると、このビットは無視されます。
NonDynamic
将来使用するために予約されています。
WarmEjectSupported
将来使用するために予約されています。
NoDisplayInUI
ユーザー インターフェイスにデバイスを表示しないでください。 このビットが設定されている場合、デバイスが存在していても起動に失敗した場合でも、デバイスはユーザー インターフェイスに表示されません。 このビットを設定する必要があるのは、バス ドライバーと関連付けられたバス フィルター ドライバーだけです。 (PNP_DEVICE_STATE構造体のPNP_DEVICE_DONT_DISPLAY_IN_UI フラグも参照してください)。
Reserved1
システムで使用するために予約されています。
WakeFromInterrupt
ドライバーまたは ACPI がウェイク イベントの処理を担当するかどうかを示します。 設定されている場合、ドライバーはウェイク イベントの処理を担当します。 ACPI は、IRP_MN_WAIT_WAKE IRP を受信したときにデバイスをアームしますが、割り込みを接続しません。IRP を完了して、ウェイク イベントのデバイス スタックに通知します。
SecureDevice
デバイスがセキュリティで保護されたデバイスかどうかを示します。
ChildOfVgaEnabledBridge
VGA デバイスの場合、親ブリッジに VGA デコード ビットが設定されているかどうかを示します。
DecodeIoOnBoot
起動時にデバイスで IO デコードが有効になっているかどうかを示します。
Reserved
システムで使用するために予約されています。
Address
基になるバス上のデバイスの場所を示すアドレスを指定します。
この数値の解釈はバス固有です。 アドレスが不明な場合、またはバス ドライバーがアドレスをサポートしていない場合、バス ドライバーはこのメンバーを既定値の0xFFFFFFFFのままにします。
次の一覧では、特定のバス ドライバーが子デバイスの [アドレス ] フィールドに格納する情報について説明します。
バス型 | 説明 |
---|---|
1394 | アドレスは揮発性であるため、アドレスを指定しません。 既定値は 0xFFFFFFFF です。 |
Eisa | スロット番号 (0 から F)。 |
IDE | IDE デバイスの場合、アドレスにはターゲット ID と LUN が含まれます。 IDE チャネルの場合、アドレスは 0 または 1 です (0 = プライマリ チャネル、1 = セカンダリ チャネル)。 |
ISApnp | アドレスを指定しません。 既定値は 0xFFFFFFFF です。 |
PC カード (PCMCIA) | ソケット番号 (通常は0x00または0x40)。 |
PCI | 高い単語のデバイス番号と低い単語の関数番号。 |
SCSI | ターゲット ID。 |
USB | ポート番号。 |
UINumber
ユーザー インターフェイスに表示できるデバイスに関連付けられている数値を指定します。
通常、この番号は、ボード上のスロットの横に印刷される番号や、ユーザーが物理デバイスを見つけやすくするその他の番号など、ユーザーが認識するスロット番号です。 このような規則がないバスの場合、または UINumber が不明な場合、バス ドライバーはこのメンバーを既定値の 0xFFFFFFFF のままにします。
DeviceState[POWER_SYSTEM_MAXIMUM]
システムの電源状態ごとにデバイスが維持できる最も電力の多いデバイスの電源状態を示す値の配列。 配列の DeviceState[PowerSystemWorking] 要素は、S0 システム状態に対応します。 PowerSystemUnspecified のエントリは、システムで使用するために予約されています。
この配列のエントリは、親 devnode の機能に基づいています。 一般的な規則として、ドライバーはこれらの値を変更しないでください。 ただし、必要に応じて、ドライバーは PowerDeviceD1 から PowerDeviceD2 などの値を小さくできます。
ルート列挙デバイスの適切なデバイス電源状態をバス ドライバーが判断できない場合は、 DeviceState[PowerSystemWorking] をPowerDeviceD0 に設定し、その他のすべてのエントリを PowerDeviceD3 に設定します。
SystemWake
デバイスがウェイク イベントを通知できる最小電力のシステム電源状態を指定します。 PowerSystemUnspecified の値は、デバイスがシステムをスリープ解除できないことを示します。
バス ドライバーは、親 devnode からこの情報を取得できます。
一般に、ドライバーはこの値を変更しないでください。 ただし、必要に応じて、ドライバーは電源状態 ( たとえば、PowerSystemHibernate から PowerSystemS1) を上げて、デバイスが休止状態からシステムをスリープ解除できないが、電源の高いスリープ状態から復帰できることを示すことができます。
DeviceWake
デバイスがウェイク イベントを通知できる最小電力のデバイスの電源状態を指定します。 PowerDeviceUnspecified の値は、デバイスがウェイク イベントを通知できないことを示します。
D1Latency
デバイスを PowerDeviceD1 状態から PowerDeviceD0 状態に戻すために、デバイスの最悪の場合のおおよその待機時間を 100 マイクロ秒単位で指定します。 デバイスが D1 状態をサポートしていない場合は、0 に設定します。
D2Latency
デバイスを PowerDeviceD2 状態から PowerDeviceD0 状態に戻すために、デバイスの最悪の場合のおおよその待機時間を 100 マイクロ秒単位で指定します。 デバイスが D2 状態をサポートしていない場合は、0 に設定します。
D3Latency
デバイスを PowerDeviceD3 状態から PowerDeviceD0 状態に戻すために、デバイスの最悪の場合のおおよその待機時間を 100 マイクロ秒単位で指定します。 デバイスが D3 状態をサポートしていない場合は、0 に設定します。
注釈
バス ドライバーは、 IRP_MN_QUERY_CAPABILITIES IRP に応答して、この構造体の適切な値を設定します。 バス フィルター ドライバー、関数ドライバー、フィルター ドライバーは、バス ドライバーによって設定された機能を変更する可能性があります。
IRP_MN_QUERY_CAPABILITIES要求を送信するドライバーは、IRP を送信する前に、この構造体のサイズ、バージョン、アドレス、および UINumber メンバーを初期化する必要があります。
DEVICE_CAPABILITIES構造を使用してデバイスの電源機能を記述する方法の詳細については、「Reporting Device Power Capabilities」を参照してください。
要件
要件 | 値 |
---|---|
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |