IOCTL_ACPI_EVAL_METHOD_EX IOCTL(acpiioct.h)

디바이스용 드라이버는 IOCTL_ACPI_EVAL_METHOD_EX 디바이스 제어 요청을 사용하여 디바이스의 네임스페이스에 있는 자식 디바이스에서 지원하는 ACPI 제어 방법을 동기적으로 평가할 수 있습니다. 드라이버는 IoBuildDeviceIoControlRequest 를 호출하고 다음 입력 및 출력 매개 변수를 전달하여 이 요청을 빌드해야 합니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

다음과 같이 IoBuildDeviceIoControlRequest 입력 매개 변수를 설정합니다.

  • IoControlCode 가 IOCTL_ACPI_EVAL_METHOD_EX 설정됩니다.
  • DeviceObject 는 디바이스의 PDO(물리적 디바이스 개체)에 대한 포인터로 설정됩니다.
  • InputBuffer 는 컨트롤 메서드에 전달할 입력 인수의 형식에 따라 달라지는 입력 버퍼 구조에 대한 포인터로 설정됩니다. 이 IOCTL에서 지원하는 형식 입력 인수에 대한 자세한 내용은 이 항목의 뒷부분에 있는 설명 섹션을 참조하세요.
  • InputBufferLengthInputBuffer에서 제공하는 입력 버퍼의 크기(바이트)로 설정됩니다.
  • OutputBufferLengthOutputBuffer에서 제공하는 출력 버퍼의 크기(바이트)를 제공합니다.
  • InternalDeviceIoControlFALSE로 설정됩니다.
  • 이벤트는 호출자가 할당하고 초기화된 이벤트 개체에 대한 포인터로 설정됩니다.

입력 버퍼 길이

InputBufferLengthInputBuffer에서 제공하는 입력 버퍼의 크기(바이트)로 설정됩니다.

출력 버퍼

다음과 같이 IoBuildDeviceIoControlRequest 출력 매개 변수를 설정합니다.

  • OutputBuffer 는 컨트롤 메서드의 출력 인수를 포함하는 ACPI_EVAL_OUTPUT_BUFFER 구조체에 대한 포인터를 제공합니다.
  • IoStatusBlockIO_STATUS_BLOCK 구조체에 대한 포인터로 설정됩니다.

출력 버퍼 길이

OutputBufferLengthOutputBuffer에서 제공하는 출력 버퍼의 크기(바이트)를 제공합니다.

상태 블록

요청이 성공하면 IoStatusBlock-Status>가 STATUS_SUCCESS 설정되고, 그렇지 않으면 상태 멤버가 오류 코드로 설정됩니다. 출력 버퍼가 출력 버퍼 헤더를 포함할 만큼 크지 않으면 상태 멤버가 STATUS_BUFFER_TOO_SMALL 설정됩니다. 출력 버퍼가 출력 버퍼 헤더를 포함할 만큼 크지만 컨트롤 메서드의 모든 출력 인수를 포함할 만큼 크지 않은 경우 상태 멤버는 STATUS_BUFFER_OVERFLOW 설정되고 OutputBuffer-Length>는 출력 버퍼의 필요한 길이로 설정됩니다.

요청이 성공하면 IoStatusBlock-Information> 멤버가 출력 버퍼에 반환되는 바이트 수로 설정되고, 그렇지 않으면 정보 멤버가 0으로 설정됩니다.

설명

디바이스의 드라이버는 IOCTL_ACPI_EVAL_METHOD_EX 사용하여 디바이스 네임스페이스의 자식 개체에서 지원하는 제어 방법을 동기적으로 평가할 수 있습니다. 이 요청에서 제공하는 제어 메서드의 경로 및 이름은 ACPI 네임스페이스에 있는 메서드의 정규화된 경로 및 이름이거나 요청이 전송되는 디바이스를 기준으로 하는 메서드의 경로 및 이름이어야 합니다. 예를 들어 'ABCD'라는 디바이스가 ACPI 네임스페이스 루트의 직속 자식이고, 'ABCD' 디바이스가 'CHLD'라는 자식 디바이스를 지원하고, 'CHLD' 디바이스가 '_FOO' 메서드를 지원한다고 가정합니다. 이 경우 '_FOO' 메서드를 평가하기 위해 드라이버는 'ABCD' 디바이스에 평가 요청을 보내고 경로와 이름 '\ABCD를 제공합니다. ACPI 네임스페이스의 정규화된 경로 및 이름인 CHLD._FOO,' 또는 ACPI 네임스페이스의 'ABCD' 디바이스에 상대적인 경로 및 이름인 경로 및 이름 'CHLD._FOO'입니다.

IOCTL_ACPI_EVAL_METHOD_EX 다음과 같은 유형의 입력 버퍼 구조를 지원합니다.

ACPI_EVAL_INPUT_BUFFER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX

ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX

컨트롤 메서드의 출력 인수는 OutBuffer 포인터에서 제공하는 가변 길이 ACPI_EVAL_OUTPUT_BUFFER 구조체에 반환됩니다. ACPI_EVAL_OUTPUT_BUFFER 각각 출력 인수를 반환하는 가변 길이 ACPI_METHOD_ARGUMENT 구조의 배열을 포함합니다.

제어 메서드를 동기적으로 평가하는 방법에 대한 자세한 내용은 ACPI 컨트롤 메서드를 동기적으로 평가하는 방법을 참조하세요.

또한 드라이버는 IOCTL_ACPI_EVAL_METHOD 요청을 사용하여 디바이스의 즉각적인 자식 개체인 제어 메서드를 동기적으로 평가할 수 있습니다.

Windows Server 2008 및 Windows Vista에서 비동기적으로 ACPI 제어 방법을 평가하는 방법에 대한 자세한 내용은 IOCTL_ACPI_ASYNC_EVAL_METHODIOCTL_ACPI_ASYNC_EVAL_METHOD_EX 참조하세요.

IOCTL_ACPI_EVAL_METHOD_EX IRQL < DISPATCH_LEVEL만 사용할 수 있습니다.

요구 사항

   
지원되는 최소 클라이언트 Windows Vista 이상 버전의 Windows.
헤더 acpiioct.h(Acpiioct.h 포함)

참고 항목

ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX

ACPI_EVAL_INPUT_BUFFER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX

ACPI_EVAL_OUTPUT_BUFFER

IOCTL_ACPI_ASYNC_EVAL_METHOD

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX

IOCTL_ACPI_EVAL_METHOD