Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > GetProcessIOCounters


Автор: NetDigger 15.12.2004, 12:30
Здравствуйте, уважаемые. Возникли проблемы с использованием функции GetProcesIOCounters - в чем дело не пойму
Код
type
IO_COUNTERS = ^_IO_COUNTERS;
_IO_COUNTERS = record
ReadOperationCount: int64;
WriteOperationCount: int64;
OtherOperationCount: int64;
ReadTransferCount: int64;
WriteTransferCount: int64;
OtherTransferCount: int64;
End;

function GetProcessIoCounters(hProcess: THandle; PIO_COUNTERS:pointer):Boolean; stdcall; external 'kernel32.dll';

procedure TForm1.Button1Click(Sender: TObject);
Var
PIDArray: array [0..1023] of DWORD;
cb: DWORD;
I: Integer;
ProcCount: Integer;
hProcess: THandle;
M : IO_COUNTERS;
begin
EnumProcesses(@PIDArray, SizeOf(PIDArray), cb);
ProcCount := cb div SizeOf(DWORD);
getMem( m, sizeof(_IO_COUNTERS));
for I := 0 to ProcCount - 1 do
begin
  hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or
  PROCESS_VM_READ,
  False,
  PIDArray[I]);
if not(GetProcessIoCounters( hProcess, M)) then Halt;
End;

end;

Автор: Girder 15.12.2004, 13:46
типо так... smile
Код
type
TIO_COUNTERS = record
 ReadOperationCount: int64;
 WriteOperationCount: int64;
 OtherOperationCount: int64;
 ReadTransferCount: int64;
 WriteTransferCount: int64;
 OtherTransferCount: int64;
end;

function GetProcessIoCounters(hProcess:Cardinal; var IoCounters:TIO_COUNTERS):Bool; stdcall; external 'kernel32.dll';

procedure TForm1.Button1Click(Sender: TObject);
var i:TIO_COUNTERS;
   OP:Cardinal;
begin
OP:=OpenProcess(PROCESS_QUERY_INFORMATION,false,GetCurrentProcessID);
if OP<>0 then
 begin
  if GetProcessIoCounters(OP,i) then
   ShowMessage('Все Ok! (OTC: '+IntToStr(i.OtherTransferCount)+')');
  CloseHandle(OP);
 end;
end;


Удачи.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)