次の方法で共有


IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO IOCTL (avc.h)

IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO I/O コントロール コードは、仮想サブユニットの列挙を制御します。 IRP_MJ_DEVICE_CONTROL ディスパッチを介して、ユーザー モードとカーネル モード コンポーネントで使用できます。 ドライバー間通信の場合は、METHOD_BUFFERED IOCTL であるため、それに応じて IRP フィールドを設定します (IrpStack-Parameters.DeviceIoControl.InputBufferLength> および Irp-AssociatedIrp.SystemBuffer>)。

IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFOは、1 つの型のサブユニット ID を追加または削除するために使用されます。 サブユニット アドレスの ID 部分が異なる連続する呼び出しでは、列挙 ID の数が変更されます。 avc.sys は、最も高い ID のみを追加または削除します。 これは、ドライバーの実装ではなく、AV/C 仕様の制限です。

この IOCTL では、AVC_SUBUNIT_ADDR_SPEC構造体が使用されます。

メジャー コード

IRP_MJ_DEVICE_CONTROL

ステータス ブロック

成功した場合、AV/C プロトコル ドライバーは Irp-IoStatus.Status>をSTATUS_SUCCESSに設定します。

その他の戻り値として、次の値を指定できます。

戻り値 説明
STATUS_INSUFFICIENT_RESOURCES バッファーが渡されなかったか、レジストリ クエリを実行するために使用できるリソースが不足しています。
STATUS_INVALID_BUFFER_SIZE Irp->AssociatedIrp.SystemBuffer で渡されるバッファーは、1 バイトのサブユニット アドレスを含む sizeof(AVC_SUBUNIT_ADDR_SPEC) 以上である必要がありますが、32 バイトのサブユニット アドレスに制限されます。
STATUS_INVALID_PARAMETER サブユニット アドレスが正しく指定されていません。
STATUS_ACCESS_DENIED 現在のユーザーには、更新プログラムを永続的にするための十分なレジストリ アクセス特権がありません。

注釈

IRQL = PASSIVE_LEVELで呼び出す必要があります。

要件

要件
Header avc.h (Avc.h を含む)

こちらもご覧ください

AVC_SUBUNIT_ADDR_SPEC

IOCTL_AVC_BUS_RESET

IOCTL_AVC_CLASS

IOCTL_AVC_REMOVE_VIRTUAL_SUBUNIT_INFO