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。
主要程序代碼
輸入/輸出緩衝區
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) |