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構造体が使用されます。
メジャー コード
ステータス ブロック
成功した場合、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 を含む) |