對裝置的存取是由安全性描述元所控制(以及它所包含的 ACL)。 在建立裝置物件或在登錄中設定裝置物件時,可以指定裝置對象的安全性描述元。
控制 WDM 驅動程式的裝置存取
當 WDM 驅動程式 (非特定總線驅動程式)建立裝置物件時,即插即用管理員會決定裝置的安全性描述元。 作業順序如下。
PnP 管理員會呼叫驅動程式的 AddDevice 例程。
驅動程式的 AddDevice 例程會呼叫 IoCreateDevice 來建立裝置物件,並將它附加至裝置物件堆疊。
PnP 管理員會更新新建立裝置對象的安全性描述元。
針對WDM驅動程式,PnP 管理員會決定裝置對象的安全性描述項,如下所示。
如果裝置在登錄中具有安全性描述元設定,則會套用至裝置堆疊中的每個物件。
否則,如果裝置的安裝類別在登錄中具有安全性描述元設定,則會套用至裝置堆疊中的每個物件。
否則,PnP 管理員會將每個對象的預設安全性描述元保留不變。 在此情況下,堆疊的預設安全性描述元取決於 PDO 的裝置類型和裝置特性。
針對大部分的裝置類型和特性,預設的安全性描述項會提供系統管理員的完整存取權(GENERIC_ALL),以及讀取、寫入和執行存取權 (GENERIC_READ |GENERIC_WRITE |GENERIC_EXECUTE) 其他人的存取權。
如需如何在登錄中設定裝置或裝置安裝類別之安全性描述項的詳細資訊,請參閱 在登錄中設定裝置物件屬性。
如果裝置是以原始模式運作,則 PnP 管理員無法判斷裝置對象的安全性描述元。 在此情況下,公交車司機必須提供安全描述元;請參閱下方。
控制 WDM 總線驅動程式的裝置存取
WDM 總線驅動程式必須針對可在原始模式中運作之每個裝置的 PDO 提供安全性描述元。 使用 IoCreateDeviceSecure 建立具有安全性描述元的裝置物件。
如果巴士司機未以原始模式操作裝置,則不需要提供安全性描述符。 PnP 管理員會決定安全性描述元,如上所述。 如果總線驅動程式必須確定其 PDO 的安全性設定比預設描述元更嚴格,則總線驅動程式可以提供安全性描述元。 總線驅動程式所指定的任何描述項,會由登錄中的設定覆寫。
如需建立裝置對象的詳細資訊,請參閱 建立裝置物件。
控制非 WDM 驅動程式的裝置存取
非 WDM 驅動程式必須為其建立的任何具名裝置物件指定預設的安全性描述元和類別 GUID。
使用 IoCreateDeviceSecure 例程來建立具名裝置物件,並指定該裝置的預設安全性描述元和類別 GUID。 安全性描述元是在 SDDL 子集中指定。 如需詳細資訊,請參閱 裝置物件的 SDDL。
系統會使用指定類別 GUID 之登錄中的任何安全性設定,覆寫預設的安全性描述元。 驅動程式必須為裝置指定自己的唯一 GUID。 使用 GuidGen 工具來產生唯一的 GUID。 (GuidGen 包含在 Microsoft Windows SDK 中。