AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Mit Delphi in den Kernel-Modus gelangen
Thema durchsuchen
Ansicht
Themen-Optionen

Mit Delphi in den Kernel-Modus gelangen

Ein Thema von Metal_Snake2 · begonnen am 3. Mai 2006 · letzter Beitrag vom 11. Okt 2006
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
Olli
(Gast)

n/a Beiträge
 
#41

Re: Mit Delphi in den Kernel-Modus gelangen

  Alt 9. Okt 2006, 11:21
Zitat von Dirkmswt:
Klar lernt man sowas nicht von heut auf Morgen
Sicher nicht, zumal viele Dinge fundamental anders sind. Umso überraschender ist es, wenn jemand sagt 90% eines DDKs durchgelesen zu haben aber die Grundlagen nicht versteht.

Zitat von Dirkmswt:
Nun meine Antwort zu irql: Ein irql ist ein Hardware Interrupt und steht für interrupt Request Level.
Setzen! Sechs!

IRQL bedeutet Interrupt Request Level, korrekt. Allerdings hat das mit Hardware-Interrupts nichts zu tun (dort gibt es auch IRQLs, die aber Interrupt Request Lines bedeuten). Es handelt sich dabei vielmehr um eine Art Priorität (nicht verwechseln mit Threadprioritäten), mit der Code behandelt wird. Code welcher in einem höheren IRQL läuft kann beispielsweise anderen Code (und immer Usermode-Code, welcher immer auf IRQL PASSIVE_LEVEL läuft) unterbrechen.

Es gibt "device IRQLs" (DIRQLs), ja - allerdings liegen die zwischen DISPATCH_LEVEL und PROFILE_LEVEL und werden nicht bei allen von NT unterstützten Architekturen genutzt. Allein die Tatsache, daß sie nicht überall genutzt werden, sollte dir deutlich machen, daß es keinen zwingenden Zusammenhang zwischen IRQLs im NT-Jargon und IRQs gibt.

Die Anzahl der IRQLs und deren Namen hätten dir einen Tip geben können:
Code:
#define PASSIVE_LEVEL 0             // Passive release level
#define LOW_LEVEL 0                 // Lowest interrupt level
#define APC_LEVEL 1                 // APC interrupt level
#define DISPATCH_LEVEL 2            // Dispatcher level

#define PROFILE_LEVEL 27            // timer used for profiling.
#define CLOCK1_LEVEL 28             // Interval clock 1 level - Not used on x86
#define CLOCK2_LEVEL 28             // Interval clock 2 level
#define IPI_LEVEL 29                // Interprocessor interrupt level
#define POWER_LEVEL 30              // Power failure level
#define HIGH_LEVEL 31               // Highest interrupt level
... zugegeben, die Frage war absichtlich gewählt, weil es ein häufiger Anfängerfehler ist, die IRQLs mit IRQs zu verwechseln und durcheinanderzuwürfeln.

Hier ein Ausschnitt aus "Inside Microsoft Windows 2000, 3rd Edition", weil auch ich keinen Aufsatz schreiben will:
Zitat:
Interrupt Levels vs. Priority Levels

As illustrated in Figure 6-13, all threads run at IRQL 0 or 1. (For a description of how Windows 2000 uses interrupt levels, see Chapter 3.) User-mode threads run at IRQL 0; only kernel-mode APCs execute at IRQL 1, since they interrupt the execution of a thread. (For more information on APCs, see in Chapter 3.) Also, threads running in kernel mode can raise IRQL. Because of this, no user-mode thread, regardless of its priority, blocks hardware interrupts (although high-priority real-time threads can block the execution of important system threads).
Thread-scheduling decisions are made at DPC/dispatch level. Thus, while the kernel is deciding which thread should run next, no thread can be running and possibly changing scheduling-related information (such as priorities). On a multiprocessor system, access to the thread-scheduling data structures is synchronized by acquiring the Dispatcher spinlock (KiDispatcherLock).
Aus dem DDK:
Zitat:
interrupt dispatch table (IDT)

A kernel-defined call table with a platform-dependent number of first-level entries (some for DIRQL ISRs) and second-level entries for interrupt transfer routines (dependent on a first-level ISR). For symmetric multiprocessor platforms, the kernel sets up an IDT for each processor.
The kernel reserves eight first-level entries per IDT for its own use; the remaining first-level entries can be connected to a platform-specific I/O bus interrupt by the HAL or to a device interrupt. The kernel's reserved entries (in low-to-high IRQL priority) are defined by the following constants:

PASSIVE_LEVEL − execute thread
APC_LEVEL − execute special kernel APC; page fault
DISPATCH_LEVEL − dispatch (execute DPC)
WAKE_LEVEL − debugger execution
CLOCK2_LEVEL − interval-timer execution
REQUEST_LEVEL − interprocessor request
POWER_LEVEL − power failure notification
HIGH_LEVEL − machine checks or bus errors
The set of software and hardware interrupt vectors mapped to these constants is platform-dependent, but none can be connected to a driver's interrupt object. Note that the constants PASSIVE_LEVEL through DISPATCH_LEVEL and WAKE_LEVEL correspond to software interrupt vectors. DIRQLs for device drivers usually have hardware priority higher than DISPATCH_LEVEL but lower than CLOCK2_LEVEL.

See also multiprocessor machine.
Zitat von Dirkmswt:
Aber eine Frage hab ich die hier aufjedenfall auch noch gut reinpasst:
Wie greife ich aus Delphi auf einen Treiber direkt zu,bzw spreche den treiber direkt an?
Gibts da Api Befehle,muss ich da den Usermode verlassen?
MSDN-Library durchsuchenDeviceIoControl(), MSDN-Library durchsuchenReadFile(), MSDN-Library durchsuchenWriteFile(), MSDN-Library durchsuchenCreateFile(), MSDN-Library durchsuchenCloseHandle() und eventuell sowas wie die MMF-Funktionen. Bei einem Display-Treiber sind es wieder ganz andere Funktionen. Ich beziehe mich also auf einen Legacy-/WDM-Treiber.

Zitat von Dirkmswt:
Die Auflistung ist sehr gut
... und die Fragen/Aufforderungen waren ernstgemeint. Bisher hast du dich aus jeder ernsthaften Diskussion herausgewunden, ohne natürlich die Verbreitung von Unfug einzustellen (bis auf diesen deinen letzten Post), was die ersten Newbies vermutlich schon wieder auf die falsche Fährte gebracht hat (denn die lesen oft genug auch nur die Hälfte ...).
  Mit Zitat antworten Zitat
Dirkmswt

Registriert seit: 27. Sep 2006
Ort: Heppenheim
64 Beiträge
 
#42

Re: Mit Delphi in den Kernel-Modus gelangen

  Alt 9. Okt 2006, 11:37
Danke Olli,deine Infos bringen mich aufjedenfall in dem Bereich weiter.
War auch eben mal bei dir auf der Page und hab mir den ddkwizard gesaugt.
Jetzt heißt es nurnoch Büffeln
Gerade als SW Programmierer ist man immer gezwungen neues zulernen.
Treiber sind schon anderst aufgebaut als normale Standard Software
Hab diesbezüglich sogar gerade eine Deutsche Seite gefunden

http://www.wischrop-net.de/nt/index_kapitel3.htm

Bis mitte nächsten Jahres kommt da bestimmt keine Langeweile auf
Auch danke für den Topic auf MSDN
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#43

Re: Mit Delphi in den Kernel-Modus gelangen

  Alt 9. Okt 2006, 16:09
Zitat von Dirkmswt:
War auch eben mal bei dir auf der Page und hab mir den ddkwizard gesaugt.
Jetzt heißt es nurnoch Büffeln
Zumindest bekommste mit DDKWizard mal erstmal ein Treiberskelett "gratis" und supereinfach. DDKBUILD mußt du dir allerdings auch ziehen, entweder von OSRs Webseite oder von meiner DDKWizard-Seite

Zitat von Dirkmswt:
Gerade als SW Programmierer ist man immer gezwungen neues zulernen.
Treiber sind schon anderst aufgebaut als normale Standard Software
Das kann man laut sagen. Am ehesten sind Treiber mit DLLs vergleichbar.

Zitat von Dirkmswt:
http://www.wischrop-net.de/nt/index_kapitel3.htm

Bis mitte nächsten Jahres kommt da bestimmt keine Langeweile auf
Auch danke für den Topic auf MSDN
Vorsicht mit der Seite von Wischrop, die ist zwar alles in allem ganz gut, hat aber doch schon einige veraltete Informationen, da es sich um Infos rund um NT4 handelt. In Sachen PnP usw. sind Millionen Zeilen in W2K dazugekommen und haben sich in WXP und W2K3 nochmals geändert. Ist also alles mit Vorsicht zu geniessen (wie auch das Buch von OSR zur NT-Treiberentwicklung, wo aber auf W2K schon ein wenig eingegangen wird).
  Mit Zitat antworten Zitat
Dirkmswt

Registriert seit: 27. Sep 2006
Ort: Heppenheim
64 Beiträge
 
#44

Re: Mit Delphi in den Kernel-Modus gelangen

  Alt 9. Okt 2006, 18:11
Ja hab ich auch schon festgestellt das Wischrop etwas veraltet ist.
die Erklärungen sind aber ganz gut sich mal ein Bild über die Technologien zumachen.
Jetzt aber nochmal zu deinem Wizard.
Habe Ihn Installiert,aber wird nicht angezeigt im Visual Studio2005.
Muss ich dann erst den ddkBuild ausführen um es auch in Vs2005 zu übernehmen?
Sehs mir nach wenn ich was verpeilt habe
Leide die letzten Tage an Schlafmangel,das ganze geht mir netmehr aus dem Kopf
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#45

Re: Mit Delphi in den Kernel-Modus gelangen

  Alt 9. Okt 2006, 18:23
Zitat von Dirkmswt:
Jetzt aber nochmal zu deinem Wizard.
Habe Ihn Installiert,aber wird nicht angezeigt im Visual Studio2005.
Welche Version und welche Sprachversion von Visual Studio hast du? Ne Express Version ist es nicht, oder? Auf denen konnte ich es nämlich bisher nicht testen.

Zitat von Dirkmswt:
Muss ich dann erst den ddkBuild ausführen um es auch in Vs2005 zu übernehmen?
Eigentlich nicht. Einfach die Schritte aus dem Manual befolgen um DDKBUILD zu installieren und dann sollte es da sein. Problem, ich konnte es bisher nur auf einem englischen VS testen, vielleicht gibt' auf anderssprachigen ja Probleme?!
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#46

Re: Mit Delphi in den Kernel-Modus gelangen

  Alt 9. Okt 2006, 18:33
Ich hab hier nen deutsches VS2005 (kein Express), ich kanns ja mal gegentesten. Das wird aber erst morgen was. Nen deutsches Express hab ich sicherlich auch noch irgendwo liegen, wenn ich da mal testen soll, eben Bescheid sagen
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Dirkmswt

Registriert seit: 27. Sep 2006
Ort: Heppenheim
64 Beiträge
 
#47

Re: Mit Delphi in den Kernel-Modus gelangen

  Alt 9. Okt 2006, 21:05
Ich hab VS2005 Standard Update
Müsste aber normal wenn dann mit sämtlichen VS2005 Versionen funktionieren.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#48

Re: Mit Delphi in den Kernel-Modus gelangen

  Alt 9. Okt 2006, 21:26
Zitat von Dirkmswt:
Ich hab VS2005 Standard Update
Müsste aber normal wenn dann mit sämtlichen VS2005 Versionen funktionieren.
Nicht sicher. Es gibt da diese Unterverzeichnisse mit dem Sprachcode. Da habe ich logischerweise nur Englisch. Hast du mal getestet, ob du die Untergruppe "DDK Project" bekommst, oder erscheint nichtmal die?

Ansonsten sag mit mal was in dem Verzeichnis C:\Programme\Microsoft Visual Studio 8\VC\vcprojects (oder entsprechend auf deinem System wo immer du es installiert hast) hast. Gibt es dort ein Unterverzeichnis "DDK Project"? Wieviele Dateien gibt es in diesem Verzeichnis und wie heissen sie ("dir /b *")
  Mit Zitat antworten Zitat
Dirkmswt

Registriert seit: 27. Sep 2006
Ort: Heppenheim
64 Beiträge
 
#49

Re: Mit Delphi in den Kernel-Modus gelangen

  Alt 10. Okt 2006, 13:44
Leider ist in dem Ordner kein Unterordner DDk o.ä
Der ddkWizard Ordner ist in meinem Programme Ordner.
Da sind unter driver\Templates\1033 18 Dateien mit Projekt Property File,Header , C Dateien und 3 Batchfiles.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#50

Re: Mit Delphi in den Kernel-Modus gelangen

  Alt 10. Okt 2006, 20:49
Zitat von Dirkmswt:
Leider ist in dem Ordner kein Unterordner DDk o.ä
Aber den Ordner selbst gibt es, bzw. gab es? Sind dort andere Dateien mit den Endungen .ico und .vsz?

Wir reden noch immer über: C:\Programme\Microsoft Visual Studio 8\VC\vcprojects

Wenn dort keine Dateien sind, gib mir mal die Ausgabe von
Code:
dir /b "C:\Programme\Microsoft Visual Studio 8\VC"
Auch würde mich dann ein Registrywert interessieren, aber erstmal warte ich deine Reaktion ab.

Zitat von Dirkmswt:
Der ddkWizard Ordner ist in meinem Programme Ordner.
Da sind unter driver\Templates\1033 18 Dateien mit Projekt Property File,Header , C Dateien und 3 Batchfiles.
Das ist korrekt und soll auch nicht anders sein.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz