IOCTL_AVC_CLASS IOCTL (avc.h)

IOCTL_AVC_CLASS I/O 制御コードは、IRP_MJ_INTERNAL_DEVICE_CONTROL ディスパッチを使用してカーネル モードからのみサポートされます。

Avc.sys では、インスタンスの種類 (ピアまたは仮想) に応じて、2 つのデバイス インターフェイスがサポートされます。 これらのインターフェイスは、ドライバーがサブユニット ドライバー、その他のドライバー、およびアプリケーションに対して公開する機能を定義します。 初期化中、 avc.sys GUID_AVC_CLASS (ピアインスタンスまたは非仮想インスタンス) またはGUID_VIRTUAL_AVC_CLASS (仮想インスタンス) を使用して IoRegisterDeviceInterface を呼び出し、ドライバーの開始または停止状態に応じて IoSetDeviceInterfaceState を 使用します。

avc.sysのピア インスタンス は、GUID_AVC_CLASS によって識別されるデバイス インターフェイスを登録します。 このインターフェイスでは、1 つの 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関数コードがサポートされているわけではありません。 個々の関数コードの参照ページでは、 のインスタンスGUID_VIRTUAL_AVC_CLASSサポートされているかどうかを指定 avc.sys

各関数コードでは、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構造体には、1 つの 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 関数に記載されています。

要件

要件
Header 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