共用方式為


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不再需要物件時刪除物件。

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

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

請小心指定 DeviceTypeDeviceCharacteristics 正確參數中的值。 這兩個參數都會使用系統定義的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

另請參閱

DEVICE_OBJECT

IoAttachDevice

IoAttachDeviceToDeviceStack

IoCreateDevice

IoCreateSymbolicLink

IoDeleteDevice