共用方式為


使用 ECP 來處理檔系統篩選驅動程式中的IRP_MJ_CREATE作業

您可以在檔案系統篩選驅動程式中使用額外的建立參數 (ECP)來處理 IRP_MJ_CREATE 作業。 您的文件系統篩選驅動程式可以呼叫下列各節中的例程,以擷取、設定(新增)、認可和移除IRP_MJ_CREATE作業的 ECP。 您也可以判斷 ECP 的來源作業系統空間。

擷取ECP

若要擷取IRP_MJ_CREATE作業的 ECP:

  1. 呼叫 FltGetEcpListFromCallbackData (或 FsRtlGetEcpListFromIrp) 以擷取與建立作業相關聯的ECP_LIST指標。

  2. 執行下列其中一項作業:

設定 ECP

若要設定IRP_MJ_CREATE作業的 ECP,您的檔案系統篩選驅動程式會:

  • 在現有的 ECP_LIST中設定ECP。

  • 在新建立 的 ECP_LIST中設定ECP。

在現有ECP_LIST中設定ECP

若要在與建立作業相關聯的現有ECP_LIST設定 ECP:

  1. 呼叫 FltGetEcpListFromCallbackData (或 FsRtlGetEcpListFromIrp) 以擷取與建立作業相關聯的ECP_LIST指標

  2. 呼叫 FltAllocateExtraCreateParameter (或 FsRtlAllocateExtraCreateParameter)為 ECP 內容結構配置分頁記憶體集區,併產生該結構的指標。

  3. 呼叫 FltInsertExtraCreateParameter (或 FsRtlInsertExtraCreateParameter)將 ECP 內容結構 插入ECP_LIST 結構中。

在新建立ECP_LIST中設定ECP

如果ECP_LIST目前未與建立作業相關聯,您必須建立一個,然後在其中設定 ECP:

  1. 呼叫 FltAllocateExtraCreateParameterList (或 FsRtlAllocateExtraCreateParameterList) 來配置ECP_LIST結構的記憶體

  2. 呼叫 FltAllocateExtraCreateParameter (或 FsRtlAllocateExtraCreateParameter)為 ECP 內容結構配置分頁記憶體集區,併產生該結構的指標。

  3. 呼叫 FltInsertExtraCreateParameter (或 FsRtlInsertExtraCreateParameter) 將 ECP 內容結構插入ECP_LIST

  4. 呼叫 FltSetEcpListIntoCallbackData (或 FsRtlSetEcpListIntoIrp)將 ECP 清單附加至建立作業。

拿掉 ECP

若要移除IRP_MJ_CREATE作業的 ECP:

  1. 呼叫 FltRemoveExtraCreateParameter (或 FsRtlRemoveExtraCreateParameter) 來搜尋 ECP 內容結構的清單。 如果找到 ECP 內容結構,例程會將 ECP 內容結構與 ECP 清單中斷連結。

  2. 若要釋放卸離 ECP 內容結構的記憶體,請呼叫 FltFreeExtraCreateParameter (或 FsRtlFreeExtraCreateParameter)。 如果您以下欄其中一種方式設定記憶體,您可以呼叫這些例程來釋放 ECP 內容結構的記憶體:

將 ECP 標示為已認可,或判斷認可狀態

呼叫下列例程,將 ECP 標示為已認可,或判斷 ECP 是否標示為已認可:

判斷原點模式

呼叫 FltIsEcpFromUserMode (或 FsRtlIsEcpFromUserMode),以判斷 ECP 內容結構是否源自使用者模式。 檔系統篩選驅動程式可以拒絕接受源自使用者模式的 ECP 內容結構。

使用外觀清單來配置 ECP

呼叫下列例程,從 lookaside 列表 配置 ECP,以及管理 lookaside 列表和 ECP: