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 的指標,識別登錄區段,其中包含可能覆寫 DefaultSDDLString、DeviceType、DeviceCharacteristics和 Exclusive 參數。
DeviceObject
接收新建立之 DEVICE_OBJECT 結構的指標的變數指標。 DEVICE_OBJECT 結構是從非分頁集區配置。
傳回值
WdmlibIoCreateDeviceSecure 會在成功時傳回STATUS_SUCCESS,或在失敗時傳回適當的 NTSTATUS 錯誤碼。 這個函式可傳回之失敗碼的部分清單包括:
言論
WdmlibIoCreateDeviceSecure 會建立具名裝置物件、套用指定的安全性設定,並傳回物件的指標。 呼叫者負責藉由呼叫 ioDeleteDevice不再需要物件時刪除物件。
此例程不是作系統的一部分。 驅動程式可以使用例程,方法是連結至 windows 2000 和更新版本的 Windows Microsoft Wdmsec.lib。 (Wdmsec.lib 連結庫首先隨附於 Microsoft Windows XP Service Pack 1 [SP1] 和 Windows Server 2003 版的驅動程序開發工具包 [DDK],也隨附於 Windows 驅動程式套件 [WDK]。
建立具名裝置物件且不保證 INF 檔案設定其安全性描述元的任何驅動程式都必須使用 WdmlibIoCreateDeviceSecure。 如需詳細資訊,請參閱 建立裝置物件。 呼叫端負責設定所傳回裝置物件的特定成員。 如需詳細資訊,請參閱 初始化裝置物件 和裝置類型的特定檔。
請小心指定 DeviceType 和 DeviceCharacteristics 正確參數中的值。 這兩個參數都會使用系統定義的FILE_XXX 常數,而某些驅動程式寫入器會錯誤地指定錯誤參數中的值。
呼叫端負責在傳回的裝置物件中設定特定欄位,例如 Flags 字段,以及使用任何驅動程式定義的資訊初始化裝置擴充功能。 如需新裝置物件上所需的其他作業,請參閱 初始化裝置物件 和裝置類型的特定檔。
DeviceClassGuid 參數指定的 GUID 會決定裝置對象的裝置設定類別。 (如需裝置安裝類別的詳細資訊,請參閱 裝置安裝類別。呼叫端必須提供值,讓系統管理員可以變更裝置的安全性設定(例如,拒絕存取特定使用者)。 如需詳細資訊,請參閱安裝之後 設定Device Object Registry Properties。
非 WDM 驅動程式會指定新的 GUID,現有裝置安裝類別尚未使用。 使用Microsoft Windows SDK 中包含的 GuidGen.exe 工具來產生新的 GUID。
處理支援原始模式裝置的 WDM 總線驅動程式可以指定裝置的裝置設定類別,但前提是該類別保證已建立。 否則,請建立新的 GUID。
磁碟、磁帶、CD-ROM 和 RAM 磁碟的裝置物件會獲得磁碟區參數區塊 (VPB) 初始化,以指出磁碟區從未掛接在裝置上。
如果驅動程式呼叫 WdmlibIoCreateDeviceSecure 傳回錯誤,驅動程式應該釋放它為該裝置配置的任何資源。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 請參閱一節。 |
目標平臺 | 桌面 |
標頭 | wdmsec.h (include Wdmsec.h) |
連結庫 | Wdmsec.lib |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | AddDevice(wdm)、HwStorPortProhibitedDDIs(storport)、IrqlIoPassive1(wdm)、MiniportOnlyWdmDevice |