共用方式為


IOCTL_AVC_CLASS IOCTL (avc.h)

IOCTL_AVC_CLASS I/O 控制項程式代碼僅支援從核心模式使用IRP_MJ_INTERNAL_DEVICE_CONTROL分派。

Avc.sys 支援兩個裝置介面,視實例類型而定(對等或虛擬)。 這些介面會定義驅動程式針對子單位驅動程式、其他驅動程式和應用程式公開的功能。 初始化期間,avc.sys 呼叫 IoRegisterDeviceInterface 搭配 GUID_AVC_CLASS(對等或非虛擬實例)或GUID_VIRTUAL_AVC_CLASS(虛擬實例),然後視驅動程序的啟動或停止狀態使用 IoSetDeviceInterfaceState

avc.sys 的對等實例註冊GUID_AVC_CLASS所識別的裝置介面。 此介面支援一個 I/O 控制項程式碼,IOCTL_AVC_CLASS,進而支援多個函式程式碼。 對等 avc.sys 實例的子驅動程式保證可以透過其父裝置物件存取此介面。

avc.sys 的虛擬實例註冊GUID_VIRTUAL_AVC_CLASS所識別的裝置介面。 此介面支援四個 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.sysGUID_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 結構包含單一 函式 成員。 這個成員必須從AVC_FUNCTION列舉設定為所需的函式程序代碼。

AVC_MULTIFUNC_IRB 結構包含等位成員,指定函式程式代碼的函式 I/O 要求區塊類型特定參數。 參數及其意義會記錄每個函式程序代碼。

Parameters->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 函式中。

要求

要求 價值
標頭 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