AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein virtuelle adressen in physikalische adressen umwandeln
Thema durchsuchen
Ansicht
Themen-Optionen

virtuelle adressen in physikalische adressen umwandeln

Ein Thema von ToniR · begonnen am 10. Jun 2005 · letzter Beitrag vom 14. Jun 2005
Antwort Antwort
Seite 2 von 2     12   
Olli
(Gast)

n/a Beiträge
 
#11

Re: virtuelle adressen in physikalische adressen umwandeln

  Alt 13. Jun 2005, 09:37
Zu GMEM_FIXED. In einer PM tauchte die irrtümliche Annahme auf, daß dieses Flag dafür sorgt, daß der Speicher nicht geswappt (ausgelagert) werden darf. Dies ist nicht korrekt. Windows bietet allein Treibern die Möglichkeit zu wählen, wobei der sog. NonPagedPool als sehr begrenzte Ressource anzusehen ist. Ansonsten kümmert sich der MM um den Rest. Was bedeutet also GMEM_FIXED?
Nun, normalerweise geben die Global*()-Funktionen ein Handle zurück. Dieses Handle kann dann benutzt werden um einen Speicherbereich zu sperren und so einen Pointer darauf zu erlangen. Ist ein Bereich gesperrt, so darf sich die Adresse nicht verändern. Ist ein Bereich entsperrt, so kann der entsprechende Speicherblock, der durch das Handle repräsentiert wird, verschoben werden. GMEM_FIXED veranlaßt, daß der Speicherbereich immer gesperrt ist und somit das Handle auch als Pointer benutzt werden kann (Typecasting).

@ToniR: Ich habe nochmal ins DDK geguckt. Einen Treiber zu schreiben, der nur einen IOCTL hat, welcher dann eine phys. Adresse in eine virtuelle Adresse umwandelt sollte kein Problem sein. Allerdings bin ich mir noch nicht sicher, ob es so einfach geht diesen Bereich für den jeweiligen Prozess sichtbar zu machen. Am besten wäre wohl eine Section (MMF), denke ich. Es wird aber davon abgeraten und ich würde auch eher für das Kopieren eines Puffers. Kann man den DSP nicht stückchenweise füttern?
  Mit Zitat antworten Zitat
ToniR

Registriert seit: 10. Jun 2005
Ort: Bruckmühl
3 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: virtuelle adressen in physikalische adressen umwandeln

  Alt 14. Jun 2005, 10:37
Zitat von Olli:
wobei der sog. NonPagedPool als sehr begrenzte Ressource anzusehen ist.
Wie groß ist denn dieser NonPagedPool (ein bestimmter Prozentsatz vom Hauptspeicher?), bzw. wieviel Speicher kann ein Treiber davon belegen?
Ist die Größe dieses Pools konfigurierbar?
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#13

Re: virtuelle adressen in physikalische adressen umwandeln

  Alt 14. Jun 2005, 13:09
Zitat von ToniR:
Zitat von Olli:
wobei der sog. NonPagedPool als sehr begrenzte Ressource anzusehen ist.
Wie groß ist denn dieser NonPagedPool (ein bestimmter Prozentsatz vom Hauptspeicher?), bzw. wieviel Speicher kann ein Treiber davon belegen?
Ist die Größe dieses Pools konfigurierbar?
Auf jeden Fall maximal so groß wie der echte RAM

Ein Treiber sollte möglichst wenig davon belegen und nur wenn nötig. Wie gesagt, wenn man PagedPool benutzt, heißt dies nicht daß alles gleich ausgelagert wird, aber Windows kümmert sich dann selbst darum.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#14

Re: virtuelle adressen in physikalische adressen umwandeln

  Alt 14. Jun 2005, 13:28
Ich glaube du stocherst im Dunkeln herum.
Zur Ansteuerung eines PCI-Geraetes ist zwingend ein WDM-Treiber erforderlich.
Zur Treiberentwicklung braucht man das Windows 2003 DDK (CD bei MS bestellen, kostet nur eine Gebuehr fuer das Versenden).
Visual Studio ist nicht zwingend notwendig, aber sehr nuetzlich. Im DDK ist ein Beispieldriver fuer PCI enthalten.
Ohne C Programmierung geht garnichts, ohne reichlich WDM-Treiberwissen kaum mehr.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#15

Re: virtuelle adressen in physikalische adressen umwandeln

  Alt 14. Jun 2005, 13:42
Zitat von Robert Marquardt:
Ich glaube du stocherst im Dunkeln herum.
Zur Ansteuerung eines PCI-Geraetes ist zwingend ein WDM-Treiber erforderlich.
Vielleicht wenn du eine Zertifizierung brauchst (und PnP und Powermanagement), ansonsten tut's auch noch gut ein Treiber im NT4-Stil *grins*. Außerdem, was von oben gesagtem ist bei WDM-Treibern anders? Ich sehe noch nix

Also das aktuelle Problem scheint mir zu sein, daß ein Treiber benutzt wird, welcher, nunja man ahnt es schon, generischen Zugriff bietet. Würde man diesen generischen Zugriff auf das entsprechende Gerät zurechtschneidern, wäre dies vermutlich besser. Dazu braucht's allerdings erstmal die Spezifikationen des Gerätes und einer gewissen Testphase, plus jede Menge Zeit!
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#16

Re: virtuelle adressen in physikalische adressen umwandeln

  Alt 14. Jun 2005, 15:29
Ein VxD-Treiber statt einem WDM-Treiber? Das heisst den Beelzebub mit dem Teufel austreiben :->
Letztlich geht es aber darum das virtuelle adressen in physikalische adressen nur im Treiber umgesetzt werden koennen.
Ueblicherweise schreibt man seine Daten per DeviceIoControl an den Treiber und der verfuettert die Daten (meist scheibchenweise) dann an das Geraet.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#17

Re: virtuelle adressen in physikalische adressen umwandeln

  Alt 14. Jun 2005, 15:54
Zitat von Robert Marquardt:
Ein VxD-Treiber statt einem WDM-Treiber? Das heisst den Beelzebub mit dem Teufel austreiben :->
... du weißt sicher worüber du redest? Ich sagte NT-Treiber! VxDs sind für Windows 9x/Me gedacht und haben äußerst wenig mit dem NT-Treibermodell zu tun, geschweige denn dem WDM. Man kann aber sehr wohl ältere NT-Treiber oder Nicht-WDM-Treiber von Windows 2000 auf höheren NT-OSen benutzen (nicht immer aber oft).

Zitat von Robert Marquardt:
Letztlich geht es aber darum das virtuelle adressen in physikalische adressen nur im Treiber umgesetzt werden koennen.
Ueblicherweise schreibt man seine Daten per DeviceIoControl an den Treiber und der verfuettert die Daten (meist scheibchenweise) dann an das Geraet.
Hatte ich oben erwähnt, wurde aufgrund von Performanceproblemen als nicht machbar verworfen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 17:31 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