Share via


篩選驅動程式的控制裝置物件

注意

為了獲得最佳可靠性和效能,請使用 檔案系統迷你篩選驅動程式 搭配篩選管理員支援,而不是舊版檔案系統篩選驅動程式。 若要將舊版驅動程式移植到迷你篩選器驅動程式,請參閱 移植舊版篩選驅動程式的指導方針

建立和使用具名控制項裝置物件需要檔案系統, (CDO) 。 不同于檔案系統,舊版檔案系統篩選驅動程式不需要有 CDO。 如果這樣做,這選擇性地命名為 CDO 代表系統的篩選驅動程式。 其角色是從使用者模式應用程式接收 I/O 要求, (或較不常見,另一個核心模式驅動程式) ,並適當地處理它們。

大部分的檔案系統篩選驅動程式都會建立並使用 CDO。 不過,CDO 上的 I/O 要求支援是選擇性的。 若要提供此支援,當篩選驅動程式呼叫 IoCreateDevice 以建立 CDO 時,它必須提供物件的裝置名稱。 然後,使用者模式應用程式可以藉由呼叫 CreateFile來取得具名 CDO 的控制碼,並提供裝置名稱的使用者模式版本。

例如,請考慮假設的 「MyLegacyFilter」 核心模式驅動程式。 此驅動程式可以使用下列名稱建立 CDO:

\Device\MyLegacyFilter

並呼叫 IoCreateSymbolicLink ,將此名稱連結至對等的使用者模式可見名稱。 此命名是為了讓 MyLegacyFilter 的使用者模式應用程式可以藉由提供名稱來開啟核心模式驅動程式 CDO 的控制碼:

\\.\MyLegacyFilter

呼叫 CreateFile時。

傳送至篩選驅動程式控制裝置物件的 I/O 要求類型

檔案系統篩選驅動程式不需要支援控制裝置物件上任何 I/O 作業, (CDO) 。 不過,大部分篩選準則允許將下列 I/O 要求類型傳送至篩選的 CDO:

不同于檔案系統篩選驅動程式所建立的其他所有裝置物件,CDO 不會附加至驅動程式堆疊。 篩選驅動程式的 CDO 上方或下方沒有附加裝置物件。 因此,對於收到的任何 I/O 要求,CDO 可以安全地假設它是唯一的收件者。 這不適用於篩選裝置物件或檔案系統 CDO。 因此,CDO 最終必須完成它收到的每個 IRP。 針對快速 I/O 要求,它必須傳回 TRUE 或 FALSE。