Ist es möglich, die systemeigenen Kernel-APIs in einer Delphi-Anwendung aufzurufen? Wie nt
und zw
syscalls.Können wir Native Windows API von Delphi aufrufen?
Antwort
Sie können tatsächlich die native API von Delphi aufrufen.
Delphi wird nicht mit Header-Übersetzungen für die native API ausgeliefert. Sie müssen also Ihre eigenen angeben oder eine bereits vorhandene Übersetzung verwenden. Beispielsweise. die JEDI-Übersetzung der NT-API.
Genau, Sie brauchen JwaNative.pas aus dem Jedi Apilib (+1) – Remko
Wie David Heffernan sagt, ist es durchaus möglich, die native API von usermode und damit Delphi zu verwenden. Sie benötigen die JwaNative-Einheit von Jedi Apilib. Hier
ist kleines Beispiel aufzuzählen Prozesse Native API: (TProcessList ist ein Nachkomme von TObjectList aber der relevante Teil ist der Aufruf NtQuerySystemInformation)
function EnumProcesses: TProcessList;
var
Current: PSystemProcesses;
SystemProcesses : PSystemProcesses;
dwSize: DWORD;
nts: NTSTATUS;
begin
Result := TProcessList.Create;
dwSize := 200000;
SystemProcesses := AllocMem(dwSize);
nts := NtQuerySystemInformation(SystemProcessesAndThreadsInformation,
SystemProcesses, dwSize, @dwSize);
while nts = STATUS_INFO_LENGTH_MISMATCH do
begin
ReAllocMem(SystemProcesses, dwSize);
nts := NtQuerySystemInformation(SystemProcessesAndThreadsInformation,
SystemProcesses, dwSize, @dwSize);
end;
if nts = STATUS_SUCCESS then
begin
Current := SystemProcesses;
while True do
begin
Result.Add(TProcess.Create(Current^));
if Current^.NextEntryDelta = 0 then
Break;
Current := PSYSTEM_PROCESSES(DWORD_PTR(Current) + Current^.NextEntryDelta);
end;
end;
FreeMem(SystemProcesses);
end;
Sind Sie ein Autor von JwaNative? –
@DavidHeffernan: Ich bin einer der Admins des Jedi Apilib Projekts ... – Remko
Off-Topic: Ist es mir, oder ist es wirklich schwer, JEDI über Websearch zu finden? Wann immer ich es versuche, finde ich immer viele Links zu scheinbar vielen verschiedenen Seiten. Und gibt es viele verschiedene Projekte? Vielleicht verwirrt mich das. –
- 1. können wir startActivityForResult von Adapter aufrufen?
- 2. Systemaufrufe in Windows & Native API?
- 3. Können wir Highcharts mit React-Native verwenden?
- 4. Können wir Systemaufruf im Kernelraum aufrufen?
- 5. Können wir den Garbage Collector explizit aufrufen?
- 6. können Sie eine wirklich super native Delphi-Grafik-Engine empfehlen?
- 7. (Windows) Überwachung von API-Aufrufen in C
- 8. Können wir eine generische HystrixCommand-Unterklasse haben, von der aus wir verschiedene Abhängigkeiten aufrufen können?
- 9. Win32/NT-Native API von Windows-Subsystem für Linux-Prozesse aufrufen?
- 10. Speicherverlust Probleme mit Windows API-Aufruf - Delphi
- 11. Können wir git-cvs unter Windows verwenden?
- 12. Können wir wissen, ob wir mit youtube api streamen?
- 13. Native API-Fenster-Designer
- 14. Suche nach allen Aufrufen von Windows API aus einer Programmierperspektive
- 15. Können wir OpenID-Optionen in einer Native iPhone App implementieren?
- 16. native Windows-Anwendungsentwicklung Optionen
- 17. aufrufen Delphi-Prozedur als Methode
- 18. Aufruf Windows API von Native Client/Pepper Plugin
- 19. Können wir die Methode aufrufen, nachdem die Anwendung minimiert wurde?
- 20. Wie Windows API (FindWindow) in einer Apache-CGI-Anwendung aufrufen?
- 21. WebRTC Native API für Android
- 22. Wie können wir Daten auswählen, wenn wir Schlüsselworte als Zugriffsdatenbanktabellennamen und Feldnamen in Delphi verwenden
- 23. Können wir die Ereignis-Routing-Strategie in Windows ändern?
- 24. Wie native Javascript-Methoden von Opal aufrufen?
- 25. Delphi - Windows Aero Ressourcen
- 26. Wie können wir Kibana abfragen?
- 27. Windows CD Burning API
- 28. Aufrufen von MSYS Bash von Windows Cmd
- 29. Können wir jemals eine geöffnete Datei in Windows löschen?
- 30. Blockieren von REST-API-Aufrufen
aber wir können nt nennen und zw syscalls in a usermode c/C++ Programm, sie sind nicht nur für Treiber – n1kita
Formal können Sie einen Treiber in Delphi wie in c/C++ schreiben, gibt es keine Spracheinschränkungen. Das einzige praktische Problem ist, dass Delphi-Treiber-Frameworks nicht existieren. – kludg
@Serg Ich bin mir nicht sicher, ob es in Delphi praktisch ist, einen Treiber zu schreiben. Wie verpacken Sie den Code? Treiber sind keine DLL- oder EXE-Dateien. –