다음을 통해 공유


IOCTL_ACPI_EVAL_METHOD IOCTL(acpiioct.h)

디바이스용 드라이버는 IOCTL_ACPI_EVAL_METHOD 디바이스 제어 요청을 사용하여 디바이스에서 지원하는 ACPI 컨트롤 메서드를 동기적으로 평가할 수 있습니다. 드라이버는 IoBuildDeviceIoControlRequest를 호출하고 다음 입력 및 출력 매개 변수를 전달하여 이 요청을 빌드해야 합니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

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

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

입력 버퍼 길이

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

출력 버퍼

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

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

출력 버퍼 길이

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

상태 블록

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

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

설명

디바이스용 드라이버는 IOCTL_ACPI_EVAL_METHOD 사용하여 디바이스가 지원하는 제어 방법을 동기적으로 평가할 수 있습니다. 예를 들어 디바이스 이름이 ACPI 네임스페이스에서 'ABCD'이고 'ABCD' 디바이스가 '_FOO' 메서드를 지원하는 경우 이 IOCTL을 사용하여 'ABCD' 디바이스에 요청을 보내고 제어 메서드 이름 '_FOO'을 제공하여 제어 메서드 '_FOO'를 평가할 수 있습니다.

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

ACPI_EVAL_INPUT_BUFFER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING

ACPI_EVAL_INPUT_BUFFER_COMPLEX

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

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

Windows Server 2008 및 Windows Vista부터 드라이버는 IOCTL_ACPI_EVAL_METHOD_EX 요청을 사용하여 디바이스의 직제 자식 개체가 아닌 컨트롤 메서드를 동기적으로 평가할 수도 있습니다.

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

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

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 이상 버전의 Windows.
머리글 acpiioct.h(Acpiioct.h 포함)

추가 정보

ACPI_EVAL_INPUT_BUFFER

ACPI_EVAL_INPUT_BUFFER_COMPLEX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING

ACPI_EVAL_OUTPUT_BUFFER

ACPI_METHOD_ARGUMENT

IOCTL_ACPI_ASYNC_EVAL_METHOD

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX

IOCTL_ACPI_EVAL_METHOD_EX