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 フラグが Optionsで設定されている場合は NULL として指定できます。
[out, optional] TargetHandle
ルーチンが新しい重複ハンドルを書き込む HANDLE 変数へのポインター。 重複したハンドルは、指定されたターゲット プロセスで有効です。 このパラメーターは省略可能であり、重複するハンドルを作成しない場合は NULL として指定できます。
[in] DesiredAccess
新しいハンドルに必要なアクセスを指定する ACCESS_MASK 値。
[in] HandleAttributes
新しいハンドルに必要な属性を指定する ULONG。 属性の詳細については、OBJECT_ATTRIBUTESの Attributes メンバーの説明を参照してください。
[in] Options
重複操作の動作を制御するフラグのセット。 このパラメーターを 0 に設定するか、次のフラグの 1 つ以上のビットごとの OR に設定します。
フラグ名 | 形容 |
---|---|
DUPLICATE_SAME_ATTRIBUTES | HandleAttributes パラメーターを使用する代わりに、ソース ハンドルからターゲット ハンドルに属性をコピーします。 |
DUPLICATE_SAME_ACCESS | DesiredAccess パラメーターを使用する代わりに、ソース ハンドルからターゲット ハンドルにアクセス権をコピーします。 |
DUPLICATE_CLOSE_SOURCE | ソース ハンドルを閉じます。 |
戻り値
ZwDuplicateObject
備考
ソース ハンドルは、指定されたソース プロセスのコンテキストで評価されます。 呼び出し元プロセスは、ソース プロセスに 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。 |
ターゲット プラットフォーム の |
万国 |
ヘッダー | ntifs.h (Ntdef.h、Ntifs.h、Fltkernel.h を含む) |
ライブラリ | Ntoskrnl.lib |
IRQL | PASSIVE_LEVEL |