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 檔案物件中 FsContext 所指向之結構中的第一個專案。 有效的主要函式識別碼會列為 。
識別碼 | 描述 |
---|---|
IRP_MJ_CREATE | 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 為基礎的專案。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | ks.h (包含 Ks.h) |
程式庫 | Ks.lib |