次の方法で共有


ZwDeleteValueKey 関数 (wdm.h)

ZwDeleteValueKey ルーチンは、レジストリ内の開いているキーから名前と一致する値エントリを削除します。 そのようなエントリが存在しない場合は、エラーが返されます。

構文

NTSYSAPI NTSTATUS ZwDeleteValueKey(
  [in] HANDLE          KeyHandle,
  [in] PUNICODE_STRING ValueName
);

パラメーター

[in] KeyHandle

目的の値エントリを含むレジストリ キーへのハンドル。 このキーは、目的のアクセスKEY_SET_VALUE設定して開かれている必要があります。 このハンドルは、 ZwCreateKey または ZwOpenKey の正常な呼び出しによって作成 されます

[in] ValueName

削除 する値 エントリの名前を含むUNICODE_STRING構造体へのポインター。 値エントリに名前がない場合、このパラメーターは空の文字列にすることができます。

戻り値

ZwDeleteValueKey は 、操作の最終的な完了状態を表すSTATUS_SUCCESSまたは適切なエラー状態を返します。 考えられるエラー状態コードは次のとおりです。

リターン コード 説明
STATUS_ACCESS_DENIED KeyHandle ハンドルには、KEY_SET_VALUEアクセス権がありません。
STATUS_INSUFFICIENT_RESOURCES この関数に必要な追加のリソースは使用できませんでした。
STATUS_INVALID_HANDLE 指定された KeyHandle パラメーターが NULL ポインターであるか、開いているレジストリ キーへの有効なポインターではありません。
STATUS_OBJECT_NAME_NOT_FOUND ValueName レジストリ キー エントリが見つかりませんでした。

注釈

削除アクセスを成功させるには、ZwDeleteValueKey に渡される KeyHandle が開かれている必要があります。 KEY_SET_VALUE、KEY_WRITE、および KEY_ALL_ACCESS の DesiredAccess 値には、削除アクセスに必要なKEY_SET_VALUE アクセス マスクが含まれます。 DesiredAccess で使用できる値の説明については、「ZwCreateKey」を参照してください。

このレジストリ キーにコールバック関数が登録されている場合、これらのコールバック関数が呼び出されます。

デバイス ドライバーは、\Registry のサブキー内の値エントリを削除するために 、ZwDeleteValueKey を直接呼び出そうとしないでください 。\ResourceMap キー。 \Registry の値エントリを書き込んだり削除したりできるのは、システムだけです 。\HardwareDescription ツリー。

この関数の呼び出しがユーザー モードで行われる場合は、"ZwDeleteValueKey" ではなく"NtDeleteValueKey" という名前を使用する必要があります。

カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx バージョンと ZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt バージョンと Zw バージョンの使用」を参照してください。

要件

要件
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h、Fltkernel.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

こちらもご覧ください

Nt および Zw バージョンのネイティブ システム サービス ルーチンの使用

ZwCreateKey

ZwDeleteKey

ZwEnumerateValueKey

ZwOpenKey

ZwQueryValueKey

ZwSetValueKey