KsSetMajorFunctionHandler 函式 (ks.h)
KsSetMajorFunctionHandler 函式會將指定的主要函式的處理程式設定為使用內部分派。 它會透過不透明對象標頭中包含的KSDISPATCH_TABLE路由傳送,以做為檔案物件內 FsContext 所指向之結構內的第一個專案。 分派假設數據表和 FsContext 結構是由裝置使用 KsAllocateObjectHeader初始化。
語法
KSDDKAPI NTSTATUS KsSetMajorFunctionHandler(
[in] PDRIVER_OBJECT DriverObject,
[in] ULONG MajorFunction
);
參數
[in] DriverObject
指定要處理主要函式的驅動程序物件。
[in] MajorFunction
指定要處理的主要函式識別碼。 這會將驅動程序物件中的主要函式指標設定為內部函式,然後分派至 KSDISPATCH_TABLE 函式。 此數據表的指標會假設為所分派之特定 IRP 檔案物件中 FsCon text 所指向之結構中的第一個專案。 有效的主要函式標識碼會如所列。
標識碼 | 描述 |
---|---|
IRP_MJ_CREATE | 建立 IRP。 在此實例中,建立要求可用於建立新的篩選實例,或建立一些物件,例如篩選下的針腳或針腳下的時鐘。 這假設驅動程式物件範圍中的第一個專案包含KSDEVICE_HEADER結構,用來根據所傳遞的名稱尋找要建立的物件類型。 如果指定父檔案物件,則該物件的KSDISPATCH_TABLE。會查看 FsContext 中的 ChildCreateHandlerTable,以判斷要用於建立的處理程式,或使用裝置對象的數據表。 |
IRP_MJ_CLOSE | 關閉 IRP。 |
IRP_MJ_DEVICE_CONTROL | 裝置控制 IRP。 |
IRP_MJ_READ | 讀取 IRP。 |
IRP_MJ_WRITE | 寫入 IRP。 |
IRP_MJ_FLUSH_BUFFERS | 排清 IRP。 |
IRP_MJ_QUERY_SECURITY | 查詢安全性資訊。 |
IRP_MJ_SET_SECURITY | 設定安全性資訊。 |
KSDISPATCH_FASTIO | 這個旗標可以新增至 MajorFunction 識別符,以指定項目參考快速 I/O 分派數據表,而不是典型的主要函式專案。 這隻適用於IRP_MJ_READ、IRP_MJ_WRITE或IRP_MJ_DEVICE_CONTROL。 驅動程式負責建立 DriverObject->FastIoDispatch 數據表。 如同一般分派,如果為驅動程式對象設定處理程式,則所有檔案對象都必須處理該快速 I/O,即使進入只指向 DispatchFastIoDeviceControlFailure 或類似的函式也一樣。 |
傳回值
如果MajorFunction標識符有效,則傳回STATUS_SUCCESS。
言論
如果為驅動程式物件設定了主要函式處理程式,則所有檔案物件都必須處理該主要函式,即使進入只指向 KsDispatchInvalidDeviceRequest。
KSDISPATCH_FASTIO
這個旗標可用來指定應該設定快速 I/O 專案,而不是以 IRP 為基礎的專案。
要求
要求 | 價值 |
---|---|
目標平臺 | 普遍 |
標頭 | ks.h (包括 Ks.h) |
連結庫 | Ks.lib |