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 の 処理」を参照してください。
メジャー コード
入力/出力バッファー
パラメーター->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 を含む) |