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中 屬性 成員的描述。
[in] Options
一組旗標,可控制重複作業的行為。 將此參數設定為零或設定為下列一或多個旗標的位 OR。
旗標名稱 | 描述 |
---|---|
DUPLICATE_SAME_ATTRIBUTES | 不要使用 HandleAttributes 參數,而是將屬性從來源句柄複製到目標句柄。 |
DUPLICATE_SAME_ACCESS | 不要使用 DesiredAccess 參數,而是從來源句柄將訪問許可權複製到目標句柄。 |
DUPLICATE_CLOSE_SOURCE | 關閉來源句柄。 |
傳回值
如果呼叫成功,ZwDuplicateObject 會傳回STATUS_SUCCESS。 否則,它會傳回適當的錯誤狀態代碼。
言論
來源句柄會在指定的來源進程內容中進行評估。 呼叫進程必須具有來源進程的 PROCESS_DUP_HANDLE 存取權。 重複的句柄會在指定之目標進程的句柄數據表中建立。 呼叫進程必須具有目標進程的 PROCESS_DUP_HANDLE 存取權。
根據預設,會使用
如果呼叫此函式是在使用者模式中發生,您應該使用名稱 「NtDuplicateObject」 而不是 「ZwDuplicateObject」 。
對於內核模式驅動程式的呼叫,NtXxx 和 ZwXxx 版本的 Windows 原生系統服務例程,在處理和解譯輸入參數的方式上可能會有不同的行為。 如需 nt NtXxx 與 ZwXxx 例程之間關聯性的詳細資訊,請參閱 使用 Nt 和 Zw 版本的原生系統服務例程。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000。 |
目標平臺 | 普遍 |
標頭 | ntifs.h (包括 Ntdef.h、Ntifs.h、Fltkernel.h) |
連結庫 | Ntoskrnl.lib |
IRQL | PASSIVE_LEVEL |