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