共用方式為


WdmlibIoCreateDeviceSecure 函式 (wdmsec.h)

WdmlibIoCreateDeviceSecure 函式 (或 IoCreateDeviceSecure) 會建立具名裝置物件,並套用指定的安全性設定。

語法

NTSTATUS WdmlibIoCreateDeviceSecure(
  [in]           PDRIVER_OBJECT   DriverObject,
  [in]           ULONG            DeviceExtensionSize,
  [in, optional] PUNICODE_STRING  DeviceName,
  [in]           DEVICE_TYPE      DeviceType,
  [in]           ULONG            DeviceCharacteristics,
  [in]           BOOLEAN          Exclusive,
  [in]           PCUNICODE_STRING DefaultSDDLString,
  [in, optional] LPCGUID          DeviceClassGuid,
                 PDEVICE_OBJECT   *DeviceObject
);

參數

[in] DriverObject

呼叫端之驅動程序物件的指標。 每個驅動程式都會在其 DriverEntry 例程的參數中接收其驅動程式物件的指標。 WDM 函式和篩選驅動程式也會在其 AddDevice 例程中接收驅動程式對象指標。

[in] DeviceExtensionSize

指定要為 裝置物件的裝置延伸模組 配置驅動程式決定的位元元組數目。 裝置擴充功能的內部結構是驅動程式定義的。

[in, optional] DeviceName

選擇性地指向緩衝區,其中包含命名裝置物件的 Null 終止 Unicode 字串。 字串必須是完整路徑名稱。 如果未提供名稱,FILE_AUTOGENERATED_DEVICE_NAME旗標必須存在於 DeviceCharacteristics 參數中。 (若要建立未命名的裝置物件,請使用 IoCreateDevice 例程.)

[in] DeviceType

指定其中一個系統定義的FILE_DEVICE_XXX 常數,指出裝置 (類型,例如FILE_DEVICE_DISK、FILE_DEVICE_KEYBOARD等) ,或新類型裝置的廠商定義值。 如需詳細資訊,請參閱 指定裝置類型。 (因為總線驅動程式可能沒有裝置類型的相關信息,所以可以在 INF AddReg 指示詞中指定 PDO 的裝置類型值。)

[in] DeviceCharacteristics

指定一或多個系統定義的常數 ORed,以提供驅動程式裝置的其他資訊。 如需可能裝置特性的清單,請參閱 DEVICE_OBJECT。 如需如何指定裝置特性的詳細資訊,請參閱 指定裝置特性。 大部分驅動程式都會為此參數指定FILE_DEVICE_SECURE_OPEN。

[in] Exclusive

指定裝置物件是否代表 獨佔裝置。 大部分驅動程式都會將此值設定為 FALSE。 如需詳細資訊,請參閱 指定裝置對象的獨佔存取權。

[in] DefaultSDDLString

指定裝置物件預設安全性設定的字串表示。 除非系統管理員將覆寫放在 DeviceClassGuid 參數所識別登錄區段中的覆寫,否則套用至裝置物件的安全性衍生自此字串。

安全性設定是在安全性描述項定義語言的子集中指定, (SDDL) 。 也會提供一組預先定義的常數 (SDDL_DEVOBJ_ XXX) 。 如需詳細資訊,請參閱 保護裝置物件

[in, optional] DeviceClassGuid

GUID 的指標,識別登錄區段,其中包含 DefaultSDDLStringDeviceTypeDeviceCharacteristicsExclusive 參數的可能覆寫。

注意 您應該一律指定自定義類別 GUID。 您不應該指定現有的類別 GUID。 如果您指定現有的類別 GUID,其他嘗試指定現有類別 GUID 的驅動程式可能無法安裝,或可能會安裝不正確的安全性設定。
 

DeviceObject

接收新建立 DEVICE_OBJECT 結構指標之變數的指標。 DEVICE_OBJECT 結構是從非分頁集區配置。

傳回值

WdmlibIoCreateDeviceSecure 會在成功時傳回STATUS_SUCCESS,或在失敗時傳回適當的 NTSTATUS 錯誤碼。 此函式可能傳回之失敗碼的部分清單包括:

備註

WdmlibIoCreateDeviceSecure 會 建立具名裝置物件、套用指定的安全性設定,並傳回物件的指標。 呼叫端負責在呼叫 IoDeleteDevice不再需要物件時刪除物件。

此例程不是操作系統的一部分。 驅動程式可以透過連結至 Microsoft Windows 2000 和更新版本的 Windows 上的 Wdmsec.lib 來使用例程。 (Wdmsec.lib 連結庫第一次隨附於 Microsoft Windows XP Service Pack 1 [SP1] 和 Windows Server 2003 版本的驅動程序開發工具包 [DDK],也隨附於 Windows 驅動程式套件 [WDK].)

任何建立具名裝置對象的驅動程式,不保證 INF 檔案所設定的安全性描述符都必須使用 WdmlibIoCreateDeviceSecure。 如需詳細資訊,請參閱 建立裝置物件。 呼叫端負責設定傳回之裝置物件的特定成員。 如需詳細資訊,請參閱 初始化裝置物件 和裝置類型的特定檔。

請小心指定正確參數中的 DeviceTypeDeviceCharacteristics 值。 這兩個參數都會使用系統定義的FILE_XXX 常數,而某些驅動程式寫入器會錯誤地指定錯誤參數中的值。

呼叫端負責在傳回的裝置物件中設定特定欄位,例如 [ 標] 欄位,以及使用任何驅動程式定義的資訊初始化裝置擴充功能。 如需新裝置物件上所需的其他作業,請參閱 初始化裝置物件 和裝置類型的特定檔。

DeviceClassGuid 參數指定的 GUID 會決定裝置對象的裝置安裝類別。 (如需裝置設定類別的詳細資訊,請參閱 裝置設定類別。) 呼叫端必須提供值,讓系統管理員可以變更裝置 (的安全性設定,以拒絕存取特定使用者) 。 如需詳細資訊,請參閱 在安裝後設定 Device Object Registry 屬性

非 WDM 驅動程式會指定新的 GUID,現有裝置安裝類別尚未使用。 使用包含在 Microsoft Windows SDK 中的 GuidGen.exe 工具來產生新的 GUID。

處理原始模式可用裝置的 WDM 總線驅動程式可以指定裝置的裝置設定類別,但只有在該類別保證已建立時。 否則,請建立新的 GUID。

磁碟、磁帶、CD-ROM 和 RAM 磁碟的裝置物件會獲得磁碟區參數區塊 (VPB) 初始化,以指出磁碟區從未掛接在裝置上。

如果驅動程式呼叫 WdmlibIoCreateDeviceSecure 傳回錯誤,驅動程式應該釋放它為該裝置配置的任何資源。

規格需求

需求
最低支援的用戶端 請參閱一節。
目標平台 桌面
標頭 wdmsec.h (包含 Wdmsec.h)
程式庫 Wdmsec.lib
IRQL PASSIVE_LEVEL
DDI 合規性規則 AddDevice (wdm) HwStorPortProhibitedDIS (storport) IrqlIoPassive1 (wdm) , MiniportOnlyWdmDevice

另請參閱

DEVICE_OBJECT

IoAttachDevice

IoAttachDeviceToDeviceStack

IoCreateDevice

IoCreateSymbolicLink

IoDeleteDevice