Вверх ↑
Разработчик
Ответов: 26066
Рейтинг: 2120
#1: 2018-11-12 13:30:16 ЛС | профиль | цитата
Вот твой код, только не знаю, чем он может помочь?

Схема


Add(MainForm,2953706,126,105)
{
Width=845
Height=326
}
Add(Button,9958066,126,147)
{
Left=385
Top=255
link(onClick,14384289:doEnum,[])
}
Add(Memo,6190371,231,147)
{
Left=15
Top=10
Width=805
Height=240
Font=[Courier,10,0,0,204]
ScrollBars=2
}
Add(InlineCode,14384289,175,147)
{
WorkPoints=#6:doEnum|
EventPoints=#6:onEnum|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|32:uses windows, kol, Share, Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|23: onEnum: THI_Event;|51: procedure doEnum(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|1:{|71: This code takes advantage of the undocumented NtQuerySystemInformation|57: API to obtain a list of loaded drivers under Windows NT.|1:}|5:const|25: DRIVER_INFORMATION = 11;|4:type|18: TPDWord = ^DWORD;|28: TDriverInfo = packed record|19: Address: Pointer;|18: Unknown1: DWORD;|18: Unknown2: DWORD;|20: EntryIndex: DWORD;|18: Unknown4: DWORD;|40: Name: array [0..MAX_PATH + 3] of Char;|5: end;|3:var|54: NtQuerySystemInformation: function (infoClass: DWORD;|17: buffer: Pointer;|16: bufSize: DWORD;|44: returnSize: TPDword): DWORD; stdcall = nil;|0:|31:function GetDriverInfo: string;|4:var |43: temp, Index, numBytes, numEntries: DWORD;|15: buf: TPDword;|27: driverInfo: ^TDriverInfo;|5:begin|41: if @NtQuerySystemInformation = nil then|74: NtQuerySystemInformation := GetProcAddress(GetModuleHandle('ntdll.dll'),|30: 'NtQuerySystemInformation');|32: // Obtain required buffer size|68: NtQuerySystemInformation(DRIVER_INFORMATION, @temp, 0, @numBytes);|20: // Allocate buffer|32: buf := AllocMem(numBytes * 2);|77: NtQuerySystemInformation(DRIVER_INFORMATION, buf, numBytes * 2, @numBytes);|21: numEntries := buf^;|41: driverInfo := Pointer(DWORD(buf) + 12);|15: Result := '';|34: for Index := 1 to numEntries do |7: begin|85: Result := Result + #$D#$A + 'Address: $' + Int2Hex(DWORD(driverInfo^.Address), 8) +|44: #9 + 'Name: "' + (driverInfo^.Name) + '"';|18: Inc(driverInfo);|6: end;|23: Delete(Result, 1, 2);|15: FreeMem(buf);|4:end;|1: |29:procedure THiAsmClass.doEnum;|5:begin|37: _hi_OnEvent(onEnum, GetDriverInfo);|37:// ListBox1.Items.Add(GetDriverInfo)|4:end;|0:|4:end.|
link(onEnum,6190371:doAdd,[])
}

карма: 22

0