次の方法で共有


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関数コードがサポートされているわけではありません。 個々の関数コードの参照ページでは、avc.sysのインスタンスGUID_VIRTUAL_AVC_CLASSサポートされているかどうかを指定します。

各関数コードでは、IOCTL_AVC_CLASS関数コード (および制限事項) について説明します。

IRP と IOCTL の詳細については、「IRPの処理」を参照してください。

メジャー コード

IRP_MJ_DEVICE_CONTROL

入力/出力バッファー

Parameters->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 要求ブロックの型固有パラメーターを指定する共用体メンバーが含まれています。 パラメーターとその意味は、各関数コードに記載されています。

Parameters->Others.Argument1 は、入力として渡されたのと同じAVC_COMMAND_IRBまたはAVC_MULTIFUNC_IRB構造体を指します。 関数の完了の一環として、サブユニット ドライバーは、構造体内の共用体の特定のサブメンバーにドライバーの情報を入力します。 返された情報は、各要求に記載されています。

状態ブロック

AV/C プロトコル ドライバーが I/O Status Block (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