IOCTL_ACPI_ENUM_CHILDREN IOCTL (acpiioct.h)

IOCTL_ACPI_ENUM_CHILDREN裝置控制要求可用來列舉傳送此要求之裝置 ACPI 命名空間中裝置或具名子對象的路徑和名稱。 驅動程式應該呼叫 IoBuildDeviceIoControlRequest ,並傳遞下列輸入和輸出參數來建置此要求。

主要程序代碼

IRP_MJ_DEVICE_CONTROL

輸入緩衝區

設定 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_ENUM_CHILDREN_OUTPUT_BUFFER結構的指標 其中 ACPI 驅動程式會傳回列舉子裝置的路徑和名稱。
  • 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 成員會設定為零。

備註

IOCTL_ACPI_ENUM_CHILDREN會傳回可變長度ACPI_ENUM_CHILDREN_OUTPUT_BUFFER結構,其中包含可變長度 ACPI_ENUM_CHILD 結構的陣列,其中每一個結構都會傳回要求所傳送裝置之 ACPI 命名空間中物件的完整路徑和名稱。 此要求列舉的對象取決於所提供輸入結構ACPI_ENUM_CHILDREN_INPUT_BUFFER之 Flags 成員的設定,如下所示:

如果驅動程式配置的輸出緩衝區不夠大,無法傳回所有要求的子名稱,ACPI 驅動程式不會傳回任何子名稱,並將要求IO_STATUS_BLOCK的 Status 成員設定為STATUS_BUFFER_OVERFLOW。 在此情況下,如果輸出緩衝區的大小以位元組為單位至少 為 sizeof (ACPI_ENUM_CHILDREN_OUTPUT_BUFFER_SIGNATURE) ,ACPI 驅動程式也會將 NumberOfChildren 設定為大小,以位元組為單位,這是擷取要求的路徑和名稱所需的大小。

驅動程式通常會使用兩個IOCTL_ACPI_ENUM_CHILDREN要求序列來列舉感興趣的子物件。 驅動程式會傳送第一個要求,以取得包含所有要求對象的路徑和名稱所需的輸出緩衝區大小。 驅動程式會傳送第二個要求,以傳回輸出緩衝區中對象的路徑和名稱。

如需如何列舉裝置子裝置的詳細資訊,請參閱 列舉子裝置和控制方法

IOCTL_ACPI_ENUM_CHILDREN只能用於 IRQL< DISPATCH_LEVEL。

規格需求

需求
最低支援的用戶端 Windows Vista 和更新版本的 Windows。
標頭 acpiioct.h (包含 Acpiioct.h)

另請參閱

ACPI_ENUM_CHILD

ACPI_ENUM_CHILDREN_INPUT_BUFFER

ACPI_ENUM_CHILDREN_OUTPUT_BUFFER