2015-07-28 2 views
0

Я пытаюсь запустить процесс и получить GetProcessIoCounters работать без успеха. Я всегда получаю «Недопустимый доступ к ячейке памяти». Может кто-нибудь дать совет.GetProcessioCounters: Ошибка Неверный доступ к ячейке памяти

Вот мой код:

if (!CreateProcessA("c:\\app.exe",NULL,NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) 
    printError(TEXT("CreateProcess Err")); 

    PIO_COUNTERS  ioc = 0 ; 
    if(!GetProcessIoCounters(hProcess, ioc)) 
     printError(TEXT("GetProcessIoCounters Err")); 
    else   
    { 
    wprintf(L"%lu %lu \n", hProcess, ioc->ReadOperationCount); 
+0

'если (! GetProcessIoCounters (hProcess, и IoC)) ?? –

+0

'hProcess' == >>' pi.hProcess', в любом из этих кодов нет 'hProcess', объявленного или не назначенного. Post * реальный * код, который воспроизводит * реальный * проблема пожалуйста. – WhozCraig

+0

Я попробовал «IO_COUNTERS \t \t ioc; if (! GetProcessIoCounters (hProcess, & ioc))». Это сработало. –

ответ

3

Пока не ясно, откуда вы получите процесс обрабатывать hProcess, и предполагая, что это правильно, в GetProcessIoCounters необходимо предоставить указатель на существующую IO_COUNTERS структуру, не просто указатель на него.

Try:

if (!CreateProcessA("c:\\app.exe",NULL,NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) 
    printError(TEXT("CreateProcess Err")); 

    IO_COUNTERS ioc = {0} ; 
    if(!GetProcessIoCounters(hProcess, &ioc)) 
     printError(TEXT("GetProcessIoCounters Err")); 
    else   
    { 
    wprintf(L"%lu %lu \n", hProcess, ioc.ReadOperationCount); 
Смежные вопросы