ZwDuplicateObject 関数 (ntifs.h)

ZwDuplicateObject ルーチンは、指定されたソース ハンドルの複製であるハンドルを作成します。

構文

NTSYSAPI NTSTATUS ZwDuplicateObject(
  [in]            HANDLE      SourceProcessHandle,
  [in]            HANDLE      SourceHandle,
  [in, optional]  HANDLE      TargetProcessHandle,
  [out, optional] PHANDLE     TargetHandle,
  [in]            ACCESS_MASK DesiredAccess,
  [in]            ULONG       HandleAttributes,
  [in]            ULONG       Options
);

パラメーター

[in] SourceProcessHandle

重複するハンドルのソース プロセスへのハンドル。

[in] SourceHandle

複製するハンドル。

[in, optional] TargetProcessHandle

新しいハンドルを受け取るターゲット プロセスへのハンドル。 このパラメーターは省略可能であり、オプションDUPLICATE_CLOSE_SOURCE フラグが設定されている場合は NULL として指定できます。

[out, optional] TargetHandle

ルーチンが新しい重複ハンドルを書き込む HANDLE 変数へのポインター。 重複したハンドルは、指定されたターゲット プロセスで有効です。 このパラメーターは省略可能であり、重複するハンドルを作成しない場合は NULL として指定できます。

[in] DesiredAccess

新しいハンドルに必要なアクセス権を指定するACCESS_MASK値。

[in] HandleAttributes

新しいハンドルに必要な属性を指定する ULONG。 属性の詳細については、OBJECT_ATTRIBUTESAttributes メンバーの説明を参照してください。

[in] Options

重複操作の動作を制御するフラグのセット。 このパラメーターを 0 に設定するか、次のフラグの 1 つ以上のビットごとの OR に設定します。

フラグ名 説明
DUPLICATE_SAME_ATTRIBUTES HandleAttributes パラメーターを使用する代わりに、ソース ハンドルからターゲット ハンドルに属性をコピーします。
DUPLICATE_SAME_ACCESS DesiredAccess パラメーターを使用する代わりに、ソース ハンドルからターゲット ハンドルにアクセス権をコピーします。
DUPLICATE_CLOSE_SOURCE ソース ハンドルを閉じます。

戻り値

呼び出しが成功した場合、ZwDuplicateObject はSTATUS_SUCCESSを返します。 それ以外の場合は、適切なエラー状態コードを返します。

注釈

ソース ハンドルは、指定されたソース プロセスのコンテキストで評価されます。 呼び出し元プロセスには、ソース プロセスへの PROCESS_DUP_HANDLE アクセス権が必要です。 重複するハンドルは、指定されたターゲット プロセスのハンドル テーブルに作成されます。 呼び出し元プロセスには、ターゲット プロセスへの PROCESS_DUP_HANDLE アクセス権が必要です。

既定では、重複するハンドルは HandleAttributes パラメーターで指定された属性と、 DesiredAccess パラメーターで指定されたアクセス権を使用して作成されます。 必要に応じて、呼び出し元は Options パラメーターで DUPLICATE_SAME_ATTRIBUTES フラグと DUPLICATE_SAME_ACCESS フラグを設定することで、一方または両方の既定値をオーバーライドできます。

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

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

要件

要件
サポートされている最小のクライアント Windows 2000。
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntdef.h、Ntifs.h、Fltkernel.h を含む)
Library Ntoskrnl.lib
IRQL PASSIVE_LEVEL

こちらもご覧ください

ACCESS_MASK

OBJECT_ATTRIBUTES

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