裝置物件就像所有物件管理員物件一樣,可以命名或取消命名。 當使用者模式應用程式提出 I/O 要求時,它會依名稱指定作業的目標。 物件管理程式會解析名稱,以判斷 I/O 要求的目的地。
這很重要
僅在必要時為裝置物件命名,以提高驅動程式的安全性。 具名裝置物件通常只有在需要相容性原因時才會被需要,例如,當您有應用程式預期使用特定名稱來開啟裝置,或是您使用的是非即插即用(PNP)的裝置或控制裝置。 請注意,WDF 驅動程式不需要命名其 PnP 裝置,即可使用 WdfDeviceCreateSymbolicLink 建立符號連結。
驅動程式可以在呼叫 IoCreateDevice 或 IoCreateDeviceSecure 來建立裝置物件時,指定裝置物件的名稱。 如需何時以及如何命名裝置物件的詳細資訊,請參閱 NT 裝置名稱。
具名裝置物件也可以有 MS-DOS 裝置名稱,這是 IoCreateSymbolicLink 或 IoCreateUnprotectedSymbolicLink 所建立的符號連結。 WDM 驅動程式通常不需要 MS-DOS 裝置名稱。 如需詳細資訊,請參閱 MS-DOS 裝置名稱。
這很重要
如果您使用具名裝置物件,您可以使用 IoCreateDeviceSecure 並指定 SDDL 來協助保護它。 當您實作 IoCreateDeviceSecure 時,始終指定 DeviceClassGuid 的自定義類別 GUID。 您不應該在這裡指定現有的類別 GUID。 這樣做可能會中斷屬於該類別的其他裝置的安全性設定或相容性。 如需詳細資訊,請參閱 WdmlibIoCreateDeviceSecure。
若要允許應用程式或其他 WDF 驅動程式存取您的 PnP 裝置,您應該使用裝置介面。 如需詳細資訊,請參閱 使用裝置介面。 裝置介面作為裝置堆疊 PDO 的符號鏈接。 其中一種控制 PDO 存取的方法是透過在 INF 中指定 SDDL 字串。 如果 SDDL 字串不在 INF 檔案中,Windows 會套用預設的安全性描述元。 如需詳細資訊,請參閱 保護裝置物件 和 裝置物件的 SDDL。
本節包含下列子區段: