ZwSetValueKey 函式 (wdm.h)

ZwSetValueKey 例程會建立或取代登錄機碼的值專案。

語法

NTSYSAPI NTSTATUS ZwSetValueKey(
  [in]           HANDLE          KeyHandle,
  [in]           PUNICODE_STRING ValueName,
  [in, optional] ULONG           TitleIndex,
  [in]           ULONG           Type,
  [in, optional] PVOID           Data,
  [in]           ULONG           DataSize
);

參數

[in] KeyHandle

要寫入值項目的登錄機碼句柄。 此句柄是由成功呼叫 ZwCreateKeyZwOpenKey 所建立。

[in] ValueName

要寫入數據之值項目名稱的指標。 如果值項目沒有名稱,這個參數可以是 NULL 指標。 如果指定名稱字串,且指定的名稱與其包含索引鍵不是唯一的,則會取代現有值項目的數據。

[in, optional] TitleIndex

此參數已保留備用。 裝置和中繼驅動程序應該將此參數設定為零。

[in] Type

要寫入的下列其中一種系統定義資料類型:

類型 意義
REG_BINARY 任何形式的二進位資料,
REG_DWORD 4 位元組的數值。
REG_DWORD_LITTLE_ENDIAN 在最低位址具有最小有效位元組的4位元組數值。 與REG_DWORD相同。
REG_DWORD_BIG_ENDIAN 在最高位址具有最小有效位元組的4位元組數值。
REG_EXPAND_SZ Null 終止的 Unicode 字串,其中包含環境變數的未展開參考,例如 「%PATH%」。
REG_LINK 命名符號連結的 Unicode 字串。 此類型與裝置和中繼驅動程序無關。
REG_MULTI_SZ 以 Null 終止字串的陣列,由另一個零終止。
REG_NONE 沒有特定類型的數據。
REG_SZ 以 Null 結尾的 Unicode 字串。
REG_RESOURCE_LIST \ResourceMap 樹狀結構中,驅動程式所使用的硬體資源清單,或驅動程式所控制之其中一個實體裝置的硬體資源清單
REG_RESOURCE_REQUIREMENTS_LIST 裝置驅動程式的可能硬體資源清單,或其控制可使用的其中一個實體裝置,系統會將子集寫入 \ResourceMap 樹狀結構
REG_FULL_RESOURCE_DESCRIPTOR 系統使用實體裝置、偵測到並寫入 \HardwareDescription 樹狀結構的硬體資源清單

設備驅動器不應該嘗試呼叫 ZwSetValueKey ,在 \Registry...\ResourceMap 機碼的子機碼中明確寫入值專案。 只有系統可以將值專案寫入 至 \Registry...\HardwareDescription 樹狀結構。

[in, optional] Data

呼叫端配置的緩衝區指標,其中包含值項目的數據。

[in] DataSize

指定 數據 緩衝區的大小,以位元組為單位。 如果 Type REG_XXX_SZ,此值必須包含任何終止零的空間。

傳回值

如果作業成功,ZwSetValueKey 會傳回STATUS_SUCCESS。 否則,此例程可能會傳回下列其中一個值:

傳回碼 Description
STATUS_ACCESS_DENIED 呼叫端沒有登錄值的適當存取權。
STATUS_INVALID_HANDLE 控制代碼無效。

備註

傳遞至 ZwSetValueKeyKeyHandle 必須已開啟,且此呼叫設定為成功的KEY_SET_VALUE DesiredAccess 旗標。 如需 DesiredAccess 可能值的描述,請參閱 ZwCreateKey

如果指定的索引鍵沒有名稱符合指定 ValueName 的現有值專案, ZwSetValueKey 會建立具有指定名稱的新值專案。 如果存在相符的值項目名稱,此例程會覆寫指定 ValueName 的原始值專案。 因此, ZwSetValueKey 會保留任何特定索引鍵之每個值專案的唯一名稱。 雖然每個值專案名稱都必須是唯一的,但登錄中的許多不同索引鍵可以有具有相同名稱的值專案。

如需使用登錄機碼的詳細資訊,請參閱 在驅動程式中使用登錄

如果呼叫此函式發生在使用者模式中,您應該使用名稱 「NtSetValueKey」 而不是 「ZwSetValueKey」。

對於核心模式驅動程式的呼叫,Windows 原生系統服務例程的 NtXxxZwXxx 版本在處理和解譯輸入參數的方式可能會有不同的行為。 如需例程 NtXxxZwXxx 版本之間的關聯性詳細資訊,請參閱 使用 Nt 和 Zw 版本的原生系統服務例程

規格需求

需求
目標平台 Universal
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 合規性規則 HwStorPortProhibitedDDIs (storport) IrqlZwPassive (wdm ) 、 PowerIrpDDis (wdm) ZwRegistryCreate (storport) 、ZwRegistryCreate (storport) 、 ZwRegistryCreate (wdm) ZwRegistryOpen (storport) 、 ZwRegistryOpen (storport ) 、 ZwRegistryOpen (wdm)

另請參閱

HalAssignSlotResources

IoAssignResources

IoQueryDeviceDescription

IoReportResourceUsage

使用原生系統服務例程的 Nt 和 Zw 版本

ZwClose

ZwCreateKey

ZwFlushKey

ZwOpenKey