IOCTL_ACPI_ENUM_CHILDREN IOCTL (acpiioct.h)
IOCTL_ACPI_ENUM_CHILDRENデバイス制御要求を使用して、この要求が送信されるデバイスの ACPI 名前空間にあるデバイスまたは名前付き子オブジェクトのパスと名前を列挙できます。 ドライバーは IoBuildDeviceIoControlRequest を呼び出し、次の入力パラメーターと出力パラメーターを渡してこの要求をビルドする必要があります。
メジャー コード
[入力バッファー]
IoBuildDeviceIoControlRequest 入力パラメーターを次のように設定します。
- IoControlCode は IOCTL_ACPI_ENUM_CHILDREN に設定されています。
- DeviceObject は、デバイスの物理デバイス オブジェクト (PDO) へのポインターに設定されます。
- InputBuffer は、可変長 のACPI_ENUM_CHILDREN_INPUT_BUFFER 構造体へのポインターに設定されます。
- InputBufferLength は、 InputBuffer によって提供される入力バッファーのサイズ (バイト単位) に設定されます。
- OutputBufferLength は、 OutputBuffer によって提供される出力バッファーのサイズをバイト単位で提供します。
- InternalDeviceIoControl は FALSE に設定 されています。
- イベント は、呼び出し元によって割り当てられ、初期化されたイベント オブジェクトへのポインターに設定されます。
入力バッファーの長さ
InputBufferLength は、 InputBuffer によって提供される入力バッファーのサイズ (バイト単位) に設定されます。
出力バッファー
IoBuildDeviceIoControlRequest 出力パラメーターを次のように設定します。
- OutputBuffer は、ACPI ドライバーが列挙子デバイスのパスと名前を返す可変長 のACPI_ENUM_CHILDREN_OUTPUT_BUFFER 構造体へのポインターを提供します。
- IoStatusBlock は 、IO_STATUS_BLOCK 構造体に設定されます。
出力バッファーの長さ
OutputBufferLength は、 OutputBuffer によって提供される出力バッファーのサイズをバイト単位で提供します。
ステータス ブロック
要求が成功した場合、IoStatusBlock-Status> は STATUS_SUCCESS に設定されます。それ以外の場合、Status メンバーはエラー コードに設定されます。 出力バッファーがバッファー ヘッダーを格納するのに十分な大きさでない場合、 Status メンバーは STATUS_BUFFER_TOO_SMALL に設定されます。 出力バッファーが出力バッファー ヘッダーを格納するのに十分な大きさで、列挙されたすべての子オブジェクトのパスと名前を格納するのに十分な大きさでない場合、Status メンバーは STATUS_BUFFER_OVERFLOW に設定され、OutputBuffer-NumberOfChildren> は出力バッファーの必要な長さに設定されます。
要求が成功した場合、IoStatusBlock-Information> メンバーは出力バッファーで返されるバイト数に設定されます。それ以外の場合は、Information メンバーが 0 に設定されます。
注釈
IOCTL_ACPI_ENUM_CHILDRENは、可変長ACPI_ENUM_CHILD構造体の配列を含む可変長 ACPI_ENUM_CHILDREN_OUTPUT_BUFFER 構造体を返します。各構造体は、要求が送信されたデバイスの ACPI 名前空間内のオブジェクトの完全修飾パスと名前を返します。 この要求が列挙するオブジェクトは、次のように、指定された入力構造体ACPI_ENUM_CHILDREN_INPUT_BUFFERの Flags メンバーの設定によって異なります。
ドライバーが割り当てる出力バッファーが、要求されたすべての子名を返すのに十分な大きさでない場合、ACPI ドライバーは子名を返せず、要求がSTATUS_BUFFER_OVERFLOWするIO_STATUS_BLOCKの Status メンバーを設定します。 この場合、出力バッファーのサイズ (バイト単位) が少なくとも sizeof(ACPI_ENUM_CHILDREN_OUTPUT_BUFFER_SIGNATURE) の場合、ACPI ドライバーは、要求されたパスと名前を取得するために必要なサイズ (バイト単位) に NumberOfChildren も設定します。
ドライバーは通常、2 つのIOCTL_ACPI_ENUM_CHILDREN要求のシーケンスを使用して、対象の子オブジェクトを列挙します。 ドライバーは、要求されたすべてのオブジェクトのパスと名前を格納するために必要な出力バッファーのサイズを取得する最初の要求を送信します。 ドライバーは、出力バッファー内のオブジェクトのパスと名前を返す 2 番目の要求を送信します。
デバイスの子デバイスを列挙する方法の詳細については、「子デバイス と制御メソッドの列挙」を参照してください。
IOCTL_ACPI_ENUM_CHILDRENは IRQL< DISPATCH_LEVELでのみ使用できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降のバージョンの Windows。 |
Header | acpiioct.h (Acpiioct.h を含む) |