次の方法で共有


IPort::NewRegistryKey メソッド (portcls.h)

NewRegistryKey メソッドは、既存のレジストリ キーを開くか、レジストリに新しいキーを作成します。 このメソッドは、キーを表すレジストリ キー オブジェクトを作成し、このオブジェクトへの参照を呼び出し元に出力します。 呼び出し元は、オブジェクトの IRegistryKey インターフェイスを介してキーにアクセスします。

構文

NTSTATUS NewRegistryKey(
  PREGISTRYKEY       *OutRegistryKey,
  PUNKNOWN           OuterUnknown,
  ULONG              RegistryKeyType,
  ACCESS_MASK        DesiredAccess,
  POBJECT_ATTRIBUTES ObjectAttributes,
  ULONG              CreateOptions,
  PULONG             Disposition
);

パラメーター

OutRegistryKey

メソッドが IRegistryKey オブジェクトへの参照を書き込む呼び出し元によって割り当てられたポインター変数へのポインター。 このオブジェクトは、開かれているレジストリ キーまたは作成されているレジストリ キーを表します。 呼び出し元は、このパラメーターに有効な NULL 以外のポインター値を指定する必要があります。

OuterUnknown

レジストリ キー オブジェクトを集計する必要があるオブジェクトの IUnknown インターフェイスへのポインター。 このパラメーターは省略可能です。 集計が必要ない場合は、このパラメーターを NULL として指定します。

RegistryKeyType

呼び出し元がアクセスを要求しているレジストリ キーの種類を指定します。 詳細については、次の「解説」セクションを参照してください。

DesiredAccess

呼び出し元がキーに対して必要とするアクセスの種類を指定するアクセス制御マスク。 このパラメーターはACCESS_MASK型です。 詳細については、次の「解説」セクションを参照してください。

ObjectAttributes

作成または開いているキーのオブジェクト属性へのポインター。 RegistryKeyType の値が GeneralRegistryKey の場合、このパラメーターは、キーの有効な ObjectName 文字列を使用してOBJECT_ATTRIBUTES型の有効な初期化されたシステム構造を指す必要があります。それ以外の場合、メソッドはこのパラメーターを使用しません。 詳細については、次の「解説」セクションを参照してください。

CreateOptions

作成オプションを示すフラグ。 何も必要ない場合は、0 を指定できます。 RegistryKeyType の値が GeneralRegistryKey の場合は、このパラメーターが必要です。それ以外の場合、メソッドはこのパラメーターを使用しません。 詳細については、次の「解説」セクションを参照してください。

Disposition

新しいキーが作成されたか、既存のキーが開かれたかを示す状態値をメソッドが書き込む呼び出し元によって割り当てられた ULONG 変数へのポインター。 このパラメーターは省略可能であり、呼び出し元が状態値を必要としない場合は NULL として指定できます。 このメソッドは、RegistryKeyType の値が GeneralRegistryKey の場合にのみ、このパラメーターを使用します。 このメソッドは、他のどのキー型にもパラメーターを使用しません。 詳細については、次の「解説」セクションを参照してください。

戻り値

このメソッドは、呼び出しが成功した場合にSTATUS_SUCCESSを含む NTSTATUS を返します。 それ以外の場合、メソッドは適切なエラー コードを返します。

備考

DesiredAccess、ObjectAttributes、および Disposition パラメーターは、ZwCreateKey 呼び出しで同じ名前のパラメーターに対して定義されている値を受け取ります。

RegistryKeyType パラメーターの値が GeneralRegistryKey の場合、NewRegistryKey メソッドは、既存のレジストリ キーを開くか、またはメソッドが Disposition パラメーターを使用して出力する値によって示されるように、レジストリに新しいキーを作成します。 キーの種類が GeneralRegistryKey 以外の値である場合、メソッドはプラグ アンド プレイ デバイス列挙中に以前に作成された既存のキーを開きます。

呼び出し元は、RegistryKeyType パラメーターを次の表に示す列挙値のいずれかに設定する必要があります。

RegistryKeyType 値 意味
GeneralRegistryKey 任意のキー型への汎用アクセスを提供します。 存在する場合はキーを開き、存在しない場合はキーを作成します。
DeviceRegistryKey デバイス固有の情報を含む既存のキーを開きます。
DriverRegistryKey ドライバー固有の情報を含む既存のキーを開きます。
HwProfileRegistryKey デバイスまたはドライバー情報の現在のハードウェア プロファイルに関連する既存のキーを開きます。 これにより、ドライバーはハードウェア プロファイル固有の構成情報にアクセスできます。
DeviceInterfaceRegistryKey 特定のデバイス インターフェイス インスタンスに関する情報を含む既存のレジストリ キーを開きます。

GeneralRegistryKey の RegistryKeyType 値の場合、呼び出し元は有効な ObjectAttributes パラメーター値を指定する必要があり、CreateOptions パラメーターと Disposition パラメーターは省略可能です。 他の RegistryKeyType 値の場合、呼び出し元は有効な DeviceObject パラメーター値を指定する必要があり、CreateOptions パラメーターと Disposition パラメーターは使用されません。

ObjectAttributes パラメーターは、キー名やセキュリティ記述子などのオブジェクト属性を含むOBJECT_ATTRIBUTES型の不透明な構造体を指します。 InitializeObjectAttributes マクロを使用して構造体を初期化します。 このマクロの Attributes パラメーターで、セキュリティで保護されていないユーザー モード アプリケーションにレジストリ キーへの読み取り/書き込みアクセスを許可しない限り、OBJ_KERNEL_HANDLE フラグを設定します。

DesiredAccess パラメーターは、アクセス制御マスクです。 OutRegistryKey オブジェクトを介してアクセスするときに、呼び出し元が新しいレジストリ キーに対して必要とするアクセス制御の種類を指定します。 このマスクは、ユーザーによるレジストリ キーへのアクセスを制御する ACL (アクセス制御リスト) と混同しないでください。 NewRegistryKey を呼び出して GeneralRegistryKey 型のレジストリ キーを作成する場合、ObjectAttributes パラメーターは、ACL を含むセキュリティ記述子を含むキーの属性を指定します。 ただし、キーの種類が GeneralRegistryKey で、ObjectAttributes 構造体のセキュリティ記述子ポインターが NULL またはセキュリティ記述子の ACL ポインターが NULL の場合、呼び出しによって作成された新しいキーは、既定で親キーの ACL を継承します。

キーの種類が GeneralRegistryKey でない場合、キーは、プラグ アンド プレイがデバイス列挙中に作成されたときにキーに割り当てられた ACL を保持します。

NewRegistryKey メソッドは PcNewRegistryKey 関数に似ていますが、デバイス オブジェクトとポート オブジェクトは PcNewRegistryKey 呼び出しで明示的に指定する必要がありますが、NewRegistryKey 呼び出しでは単に暗黙的に指定される点が異なります。 PcNewRegistryKey は通常、アダプター ドライバーによって呼び出されます。 ミニポート ドライバーは通常、代わりに NewRegistryKey を呼び出します。

NewRegistryKey または PcNewRegistryKey の呼び出しによってレジストリ キーが作成または開かれたら、IRegistryKey::NewSubKey メソッドを使用してそのキーの下にサブキーを作成できます。

OutRegistryKey パラメーターと OuterUnknown パラメーターは、COM オブジェクトの参照カウント規則に従います。

必要条件

要件 価値
ヘッダー portcls.h
IRQL PASSIVE_LEVEL

関連項目

IPort する