MCPcopy Create free account
hub / github.com/KDAB/GammaRay / processInfo

Function processInfo

launcher/ui/processlist_win.cpp:82–128  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

80};
81
82static inline ProcessInfo processInfo(DWORD processId)
83{
84 ProcessInfo pi;
85 HANDLE handle = OpenProcess(PROCESS_QUERY_INFORMATION, TOKEN_READ, processId);
86 if (handle == INVALID_HANDLE_VALUE)
87 return pi;
88 WCHAR buffer[MAX_PATH];
89 DWORD bufSize = MAX_PATH;
90 if (queryFullProcessImageName(handle, 0, buffer, &bufSize))
91 pi.imageName = QString::fromUtf16(reinterpret_cast<const char16_t *>(buffer));
92
93 HANDLE processTokenHandle = NULL;
94 if (!OpenProcessToken(handle, TOKEN_READ, &processTokenHandle) || !processTokenHandle) {
95 CloseHandle(handle);
96 return pi;
97 }
98
99 DWORD size = 0;
100 GetTokenInformation(processTokenHandle, TokenUser, NULL, 0, &size);
101
102 if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
103 QByteArray buf;
104 buf.resize(size);
105 PTOKEN_USER userToken = reinterpret_cast<PTOKEN_USER>(buf.data());
106 if (userToken
107 && GetTokenInformation(processTokenHandle, TokenUser, userToken, size, &size)) {
108 SID_NAME_USE sidNameUse;
109 TCHAR user[MAX_PATH] = { 0 };
110 DWORD userNameLength = MAX_PATH;
111 TCHAR domain[MAX_PATH] = { 0 };
112 DWORD domainNameLength = MAX_PATH;
113
114 if (LookupAccountSid(NULL,
115 userToken->User.Sid,
116 user,
117 &userNameLength,
118 domain,
119 &domainNameLength,
120 &sidNameUse))
121 pi.processOwner = QString::fromUtf16(reinterpret_cast<const char16_t *>(user));
122 }
123 }
124
125 CloseHandle(processTokenHandle);
126 CloseHandle(handle);
127 return pi;
128}
129
130ProcDataList processList(const ProcDataList & /*previous*/)
131{

Callers 1

processListFunction · 0.85

Calls 3

resizeMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected