A vector
не является указателем на DWORD
; однако, это vector
случайно содержит один, так что вы можете
if (!EnumProcesses(aProcesses.data(), aProcesses.capacity(), &cbNeeded))
, если ваш компилятор компилируется для версии C ++ 11 Standard или более новой или
if (!EnumProcesses(&aProcesses[0], aProcesses.capacity(), &cbNeeded))
если это не так.
Но это просто приводит к компиляции
Есть логические проблемы, которые еще предстоит решить.
const int MAX_PROCESSES = 1024; // very few Windows systems will exceed 1024 processes
std::vector<DWORD> aProcesses(MAX_PROCESSES); // allocate space
DWORD cbNeeded;
if (!EnumProcesses(aProcesses.data(),
aProcesses.capacity() * sizeof(DWORD), // size in bytes, not elements
&cbNeeded))
{
return 1;
}
//for (auto& p : aProcesses) Not all processes may have been filled. The unused portions
//are zeroed, so this is safe, but wasteful
for (int i = 0; i < cbNeeded / sizeof(DWORD); ++i)
{
std::cout << aProcesses[i] << std::endl;
}