Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  2 516

•  TDictionary Custom Sort  4 756

•  Fast Watermark Sources  4 508

•  3D Designer  6 912

•  Sik Screen Capture  4 807

•  Patch Maker  5 299

•  Айболит (remote control)  5 309

•  ListBox Drag & Drop  4 197

•  Доска для игры Реверси  93 024

•  Графические эффекты  5 473

•  Рисование по маске  4 511

•  Перетаскивание изображений  3 707

•  Canvas Drawing  4 071

•  Рисование Луны  3 826

•  Поворот изображения  3 359

•  Рисование стержней  2 953

•  Paint on Shape  2 188

•  Генератор кроссвордов  3 031

•  Головоломка Paletto  2 384

•  Теорема Монжа об окружностях  3 161

•  Пазл Numbrix  2 072

•  Заборы и коммивояжеры  2 713

•  Игра HIP  1 694

•  Игра Go (Го)  1 616

•  Симулятор лифта  1 928

•  Программа укладки плитки  1 664

•  Генератор лабиринта  2 095

•  Проверка числового ввода  1 790

•  HEX View  2 037

•  Физический маятник  1 789

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Получить список загруженных драйверов под NT



Оформил: DeeCo

{ 
  This code takes advantage of the undocumented NtQuerySystemInformation 
  API to obtain a list of loaded drivers under Windows NT. 

  Dieser Code verwendet die undokumentiere NtQuerySystemInformation API Funktion 
  um eine Liste aller geladenen Treiber unter Windows NT zu ermitteln. 
}

 const
   DRIVER_INFORMATION = 11;

 type
   TPDWord = ^DWORD;

   TDriverInfo = packed record
     Address: Pointer;
     Unknown1: DWORD;
     Unknown2: DWORD;
     EntryIndex: DWORD;
     Unknown4: DWORD;
     Name: array [0..MAX_PATH + 3] of Char;
   end;

 var
   NtQuerySystemInformation: function (infoClass: DWORD;
   buffer: Pointer;
   bufSize: DWORD;
   returnSize: TPDword): DWORD; stdcall = nil;

   function GetDriverInfo: string;
   var
      temp, Index, numBytes, numEntries: DWORD;
     buf: TPDword;
     driverInfo: ^TDriverInfo;
   begin
     if @NtQuerySystemInformation = nil then
       NtQuerySystemInformation := GetProcAddress(GetModuleHandle('ntdll.dll'),
         'NtQuerySystemInformation');

     // Obtain required buffer size 
    NtQuerySystemInformation(DRIVER_INFORMATION, @temp, 0, @numBytes);
     // Allocate buffer 
    buf := AllocMem(numBytes * 2);

     NtQuerySystemInformation(DRIVER_INFORMATION, buf, numBytes * 2, @numBytes);
     numEntries := buf^;
     driverInfo := Pointer(DWORD(buf) + 12);
     Result     := '';
     for Index := 1 to numEntries do
      begin
       Result := Result + #0$D#0$A+'Address: $' + IntToHex(DWORD(driverInfo^.Address), 8) +
         'Name: "' + (driverInfo^.Name) + '"';
       Inc(driverInfo);
     end;
     Delete(Result, 1, 2);
     FreeMem(buf);
   end;

   procedure TForm1.Button1Click(Sender: TObject);
   begin
     ListBox1.Items.Add(GetDriverInfo)
   end;


   // Thanks to Madshi for helping me translate from C++ Code 
  // Original Code (C++) : 
  //                             NtDriverList v1.0 
  //                      Copyright 1998, 1999 Yariv Kaplan 
  //                             WWW.INTERNALS.COM 




Похожие по теме исходники

Список запущенных процессов

Список установленных устройств

Драйвер клавиатуры под DOS




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте