다음을 통해 공유


IOCTL_AVC_CLASS IOCTL(avc.h)

IOCTL_AVC_CLASS I/O 컨트롤 코드는 IRP_MJ_INTERNAL_DEVICE_CONTROL 디스패치를 사용하여 커널 모드에서만 지원됩니다.

Avc.sys instance 유형(피어 또는 가상)에 따라 두 개의 디바이스 인터페이스를 지원합니다. 이러한 인터페이스는 드라이버가 하위 단위 드라이버, 다른 드라이버 및 애플리케이션에 대해 노출하는 기능을 정의합니다. 초기화하는 동안 avc.sysGUID_AVC_CLASS(피어 또는 가상 instance) 또는 GUID_VIRTUAL_AVC_CLASS(가상 instance)를 사용하여 IoRegisterDeviceInterface를 호출한 다음, 드라이버의 시작되거나 중지된 상태에 적절하게 IoSetDeviceInterfaceState를 사용합니다.

avc.sys피어 인스턴스는 GUID_AVC_CLASS 식별된 디바이스 인터페이스를 등록합니다. 이 인터페이스는 하나의 I/O 제어 코드인 IOCTL_AVC_CLASS 지원하며, 이 코드는 여러 함수 코드를 지원합니다. 피어 avc.sys 인스턴스의 자식 드라이버는 부모 디바이스 개체를 통해 이 인터페이스에 액세스할 수 있도록 보장됩니다.

avc.sys가상 인스턴스는 GUID_VIRTUAL_AVC_CLASS 식별된 디바이스 인터페이스를 등록합니다. 이 인터페이스는 4개의 I/O 제어 코드를 지원합니다.

  • IOCTL_AVC_CLASS

  • IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO

  • IOCTL_AVC_REMOVE_VIRTUAL_SUBUNIT_INFO

  • IOCTL_AVC_BUS_RESET

GUID_AVC_CLASS 인터페이스는 모든 IOCTL_AVC_CLASS 함수 코드를 지원하지만 일부는 사용에 제한이 있습니다. 그러나 GUID_VIRTUAL_AVC_CLASS 인터페이스는 모든 IOCTL_AVC_CLASS 함수 코드를 지원하지 않습니다. 각 개별 함수 코드에 대한 참조 페이지는 avc.sys의 GUID_VIRTUAL_AVC_CLASS 인스턴스에 대해 지원되는지 여부를 지정합니다.

IOCTL_AVC_CLASS 함수 코드(및 제한 사항)는 각 함수 코드에 설명되어 있습니다.

IRP 및 IOCTL에 대한 자세한 내용은 IRP 처리를 참조하세요.

주 코드

IRP_MJ_DEVICE_CONTROL

입력/출력 버퍼

매개 변수->Others.Argument1 은 AVC_COMMAND_IRB 구조체 또는 AVC_MULTIFUNC_IRB 구조를 가리킵니다. 두 구조체 모두 다음 예제와 같이 AVC_IRB 구조를 헤더로 포함합니다.

typedef struct _AVC_COMMAND_IRB {
  AVC_IRB  Common;
  .
  .
  .
} AVC_COMMAND_IRB, *PAVC_COMMAND_IRB;
typedef struct _AVC_MULTIFUNC_IRB {
  AVC_IRB  Common;
  .
  .
  .
} AVC_MULTIFUNC_IRB, *PAVC_MULTIFUNC_IRB;

AVC_IRB 구조체에는 단일 Function 멤버가 포함됩니다. 이 멤버는 AVC_FUNCTION 열거형에서 원하는 함수 코드로 설정해야 합니다.

AVC_MULTIFUNC_IRB 구조체에는 함수 코드에 대한 함수 I/O 요청 블록 형식별 매개 변수를 지정하는 공용 구조체 멤버가 포함되어 있습니다. 매개 변수 및 해당 의미는 각 함수 코드와 함께 문서화됩니다.

매개 변수->Others.Argument1은 입력으로 전달된 동일한 AVC_COMMAND_IRB 또는 AVC_MULTIFUNC_IRB 구조를 가리킵니다. 함수를 완료하는 과정의 일환으로 하위 단위 드라이버는 구조체 내의 공용 구조체의 특정 하위 멤버를 드라이버에 대한 정보로 채웁니다. 반환된 정보는 각 요청과 함께 문서화됩니다.

상태 블록

AV/C 프로토콜 드라이버가 I/O 상태 블록(Irp-IoStatus.Status>)에서 반환하는 정보는 각 요청과 함께 문서화됩니다.

설명

대부분의 AV/C 함수를 IRQL = PASSIVE_LEVEL 호출해야 합니다. IRQL <= DISPATCH_LEVEL 몇 가지 호출될 수 있습니다. 각 IRQL은 각 AV/C 함수에 설명되어 있습니다.

요구 사항

요구 사항
헤더 avc.h(Avc.h 포함)

추가 정보

AVC_COMMAND_IRB

AVC_FUNCTION

AVC_IRB

AVC_MULTIFUNC_IRB

IOCTL_AVC_BUS_RESET

IOCTL_AVC_REMOVE_VIRTUAL_SUBUNIT_INFO

IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO