Autor Beitrag
Jan@BTH
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 12.02.03 15:11 
Hi,

vielleicht kann mir hier jemand weiter helfen. Wenn ich mit Assemblercode die CPU anspreche bekomme ich unter XP die Fehlermeldung 'Privilegierte Anweisung'. Warum??? :roll:
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: Mi 12.02.03 15:36 
Weil NT nicht zulässt, dass du direkt auf die Hardware zugreifst. :)
Jan@BTH Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 12.02.03 15:42 
und wie kann ich das umgehen?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.02.03 15:46 
Einen Treiber schreiben, aber nicht mit Delphi. Das geht nur mit Visual C und dem Visual Studio.
Jan@BTH Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 12.02.03 15:56 
Danke Euch, aber das übersteigt meine Fähigkeiten. . . :lol:
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.02.03 16:06 
Wozu willst du den die CPU direkt ansprechen?
Jan@BTH Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 12.02.03 16:14 
wollte die LPT ansprechen. . . :?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.02.03 16:19 
Um Ports anzusprechen mußt du mal bei Torry kucken. Die haben da bestimmt Komponenten für. Denen wird eine Treiber-DLL beiliegen die über die Komponente gekapselt wird.
Jan@BTH Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 12.02.03 16:22 
Danke erst mal. Propiere es aus und melde mich dann noch mal.
:idea:
Bryce
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 16.02.03 08:27 
Titel: System umgehen?
Aber es muss doch irgendwie möglich sein am System vorbei die Hardware anzusprechen. Schließlich könnte man doch bestimmte Dinge - was die Geschwindigkeit angeht - optimieren, wenn man das ganze nicht über das System, sondern direkt macht. Mir fällt da zwar nichts Konkretes ein (außer z.B. ohne OpelGL/DirectX direkt die Grafikhardware anzusprechen), aber so im Prinzip könnte das ja mal ganz sinnvol sein.
Sven
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: So 16.02.03 12:08 
Grundsätzlich es den Benutzeranwendungen auf NT-Systemen nicht erlaubt direkt auf die Hardware zuzugreifen. MS hat da aber ein Hintertürchen offen gelassen. Benutzeranwendungen laufen auf dem sogenannten Ring 3, und Systemprogramme usw. auf Ring 0. Ring 1 und 2 sind nicht belegt. Um mit einer Benutzeranwendung direkt auf die Hardware zuzugreifen muß im Programm auf Ring 0 umgeschaltet werden. Ich habe da einen Quelltext der dies tut. Dieser ist allerdings in C. Deshalb habe ich mich damit nicht weiter beschäftigt.

Gruß Sven

_________________
MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
XtrmK3v0r
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mo 03.03.03 21:13 
Hi Sven! Könntest du mir eventuell mal diesen C Source schicken?
Ich habe da so ein ähnliches Problem, zwar will ich nicht direkt auf die Hardware zugreifen aber es handelt sich dabei um eine API Funktion die dann auf den Arbeitsspeicher zugreift.Um genau zu sein ReadProcessMemory. Diese geht unter Windows Xp einfach nicht! Unter Windows 9x funktioniert sie perfekt...
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 03.03.03 22:06 
Das hat nichts mit dem Thema zu tun. Zu mindest ist die Ursache nicht hier zu suchen.
XtrmK3v0r
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mo 03.03.03 23:26 
Weisst du eventuell an was das liegen könnte? Ich bin schon am verzweifeln
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mo 03.03.03 23:34 
Auch wenn es jetzt nicht zum Thema gehört.

Kann es sein dass der Prozess, auf den du mit ReadProcessMemory zugreifen willst mit höheren (Benutzer)Rechten läuft. Z.B. Prozess 1: SYSTEM, Prozess 2: Benutzer. Prozess 2 kann nicht auf Prozess 1 zugreifen. Andersherum geht es schon.

_________________
Ist Zeit wirklich Geld?
XtrmK3v0r
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mo 03.03.03 23:38 
Nun ja ich hatte mein eigenes Programm auf höchste Priorität gestellt High bzw Realtime und wollte dann auf einen Prozess zugreifen der mittlere Priorität hatte. Aber die Funktion gibt immer wieder false zurück. Wie gesagt ich hab das ganze mal unter Windows ME und 98 getestet und da gab es keine Probleme.Deshalb dachte ich mir eben das es vielleicht mit irgend welchen Privilegien zu tun haben könnte!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 03.03.03 23:41 
Die Priorität hat nichts mit den Rechten zu tun. Hat nur was mit der Zuteilung der Rechenzeit an den Prozessor zu tun.
XtrmK3v0r
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mo 03.03.03 23:44 
Aber theoretisch muss es doch auch unter XP gehen. Was mich ja auch so gewundert hatte war das z.B dieser Memory Dumper Pro den es kostenlos zum Download gibt auch nur bis ME läuft, nicht jedoch unter NT/XP
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mo 03.03.03 23:47 
XtrmK3v0r hat folgendes geschrieben:
Aber theoretisch muss es doch auch unter XP gehen.
Nicht nur theoretisch. Das geht auch praktisch. Aber eben mit der Einschränkung, dass ein Prozess mit weniger Privilegien (Rechten) nicht auf einen mit höheren Zugreifen kann. Wäre dies nicht so, so bräuchte man gar keinen Administrator mehr, denn jeder Benutzer (der auch noch Viren ausführt) könnte dann das System zuerschießen.

_________________
Ist Zeit wirklich Geld?
XtrmK3v0r
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mo 03.03.03 23:55 
Okay jetzt bin ich verwirrt. Luckie sagt es habe nichts mit Rechten zu tun und du meinst wiederrum es hat damit zu tun. Was stimmt nun? Und wenn ja wie setz ich das code-mäßig um? :roll: