Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.20;
Скачать: CL | DM;

Вниз

Помогите найти ошибку   Найти похожие ветки 

 
проня   (2008-03-26 10:41) [0]

При компиляции этого кода:

var
 AVPID: array[0..9] of ULONG;
 last: integer;
 h2: THANDLE;
 ph: THANDLE;
 bytesIO: ULONG;
 buf: PSYSINFOBUF;
 i, c: integer;
 cid1: CLIENT_ID;
 attr: OBJECT_ATTRIBUTES;
 csrss_id: THANDLE;
 tmp1: LBuf;
 pBuffer: PROCESSENTRY32W;
 SnapShotHandle: THANDLE;
 tbi: THREAD_BASIC_INFORMATION;
 exists: boolean;
begin
 RTL.EnableSystemPrivilege("SeDebugPrivilege", true);
 last := 0;
 pBuffer.dwSize := sizeof(PROCESSENTRY32W);
 SnapShotHandle := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
 if (SnapShotHandle <> INVALID_HANDLE_VALUE) then
   if Process32FirstW(SnapShotHandle, @pBuffer) then
     repeat
       if (pBuffer.szExeFile = "my.exe") then
       begin
         for i := 0 to 9 do
           exists := (AVPID[i] = pBuffer.th32ProcessID);
         if not exists then
         begin
           AVPID[last] := pBuffer.th32ProcessID;
           inc(last);
         end;
       end;
     until (not Process32NextW(SnapShotHandle, @pBuffer));
 CloseHandle(SnapShotHandle);
 csrss_id := 0;
 pBuffer.dwSize := sizeof(PROCESSENTRY32W);
 SnapShotHandle := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
 if (SnapShotHandle <> INVALID_HANDLE_VALUE) then
   if Process32FirstW(SnapShotHandle, @pBuffer) then
     repeat
       ExtractFileNameW(pBuffer.szExeFile, tmp1);
       if (strcmpiW(tmp1, "csrss.exe") = 0) then
       begin
         csrss_id := pBuffer.th32ProcessID;
         break;
       end;
     until (not Process32NextW(SnapShotHandle, @pBuffer));
 CloseHandle(SnapShotHandle);
 if (csrss_id = 0) then exit;

 attr.Length := sizeof(OBJECT_ATTRIBUTES);
 attr.RootDirectory := 0;
 attr.ObjectName := nil;
 attr.Attributes := 0;
 attr.SecurityDescriptor := nil;
 attr.SecurityQualityOfService := nil;

 cid1.UniqueProcess := csrss_id;
 cid1.UniqueThread := 0;
 if (ZwOpenProcess(@ph, PROCESS_ALL_ACCESS, @attr, @cid1) <> STATUS_SUCCESS) then exit;
 bytesIO := 4194304;
 buf := nil;
 ZwAllocateVirtualMemory(GetCurrentProcess(), @buf, 0, @bytesIO, MEM_COMMIT, PAGE_READWRITE);
 ZwQuerySystemInformation(SystemHandleInformation, buf, 4194304, @bytesIO);
 for c := 0 to buf^.uHandleCount - 1 do
   if (buf^.rHandleTable[c].ProcessId = csrss_id) then
   begin
     if (buf^.rHandleTable[c].ObjectTypeNumber = PsThreadType) then
     begin
       h2 := 0;
       if (ZwDuplicateObject(ph, buf^.rHandleTable[c].Handle, DWORD(-1), @h2,
         0, 0, DUPLICATE_SAME_ACCESS) = STATUS_SUCCESS) then
       begin
         ZwQueryInformationThread(h2, ThreadBasicInformation, @tbi, sizeof(tbi), @bytesIO);
         for i := 0 to last do
           if (tbi.ClientId.UniqueProcess = AVPID[i]) then ZwSuspendThread(h2, nil);
       end;
     end;
   end;
 ZwClose(ph);
 bytesIO := 0;
 ZwFreeVirtualMemory(GetCurrentProcess(), @buf, @bytesIO, MEM_RELEASE);
end;

Отказывается копмилироваться, компилятор ругается на PSYSINFOBUF, CLIENT_ID, OBJECT_ATTRIBUTES. Подключал к проекту TlHelp32 но непомогло, часть ошибок исчезла, а с этими никак не разберусь. Помогите пожалуйста.


 
DrPass ©   (2008-03-26 10:49) [1]

...а разве на ZwOpenProcess, ZwOpenProcess, ZwQuerySystemInformation и т.д. не ругается?


 
{RASkov} ©   (2008-03-26 10:50) [2]

> [0] проня   (26.03.08 10:41)


> Помогите найти ошибку

А попробуй сам написать код.... тогда и искать не нужно ничего будет.... будешь сам все знать :)


 
Riply ©   (2008-03-26 11:26) [3]

> [0] проня   (26.03.08 10:41)
> Помогите найти ошибку
> Отказывается копмилироваться

А может начать с чтения книжек ?



Страницы: 1 вся ветка

Текущий архив: 2008.04.20;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.038 c
15-1204718166
pasha_golub
2008-03-05 14:56
2008.04.20
Алгоритмы компановки (расстановки, layout) графов


11-1188137808
Jimmy Lee
2007-08-26 18:16
2008.04.20
почему размер DemoEmpty у меня больше, чем в примере?


15-1204547059
TIF
2008-03-03 15:24
2008.04.20
Exit poll, выборы и... немного математики. Любителям головоломок


2-1206563385
vromav
2008-03-26 23:29
2008.04.20
Преобразование типов


3-1195535563
Skyle
2007-11-20 08:12
2008.04.20
Midas(D5)->DataSnap(BDS 2006/2007)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский