MCPcopy Create free account
hub / github.com/BeneficialCode/WinArk / DupHandle

Method DupHandle

WinSysCore/DriverHelper.cpp:184–203  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

182}
183
184HANDLE DriverHelper::DupHandle(HANDLE hObject, ULONG pid, ACCESS_MASK access, DWORD flags) {
185 HANDLE hTarget = nullptr;
186 if (OpenDevice()) {
187 DupHandleData data;
188 data.AccessMask = access;
189 data.Handle = HandleToUlong(hObject);
190 data.SourcePid = pid;
191 data.Flags = flags;
192
193 DWORD bytes;
194 ::DeviceIoControl(_hDevice, IOCTL_ARK_DUP_HANDLE, &data, sizeof(data),
195 &hTarget, sizeof(hTarget), &bytes, nullptr);
196 }
197 if (!hTarget) {
198 wil::unique_handle hProcess(OpenProcess(pid, PROCESS_DUP_HANDLE));
199 if (hProcess)
200 ::DuplicateHandle(hObject, hProcess.get(), ::GetCurrentProcess(), &hTarget, access, FALSE, flags);
201 }
202 return hTarget;
203}
204
205HANDLE DriverHelper::OpenThread(DWORD tid, ACCESS_MASK access) {
206 if (OpenDevice()) {

Callers 1

ParseTableEntryMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected