Problem mit CreateFile unter Windows Vista
-
Hallo,
folgenden Code habe ich unter Vista mit dem Compiler "wcl386" (OpenWatcom) kompiliert:
#include <windows.h> #include <stdio.h> HANDLE h; void main(void) { h = CreateFile("\\\\.\\portsxp", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL); while(1) { _asm{ mov dx, 0x378 mov al, 0xFF out dx, al } sleep(200); _asm{ mov dx, 0x378 mov al, 0 out dx, al } sleep(200); } CloseHandle(h); }
Die Ausführung der erzeugten ausführbaren Datei bzw. das Öffnen der Ports schlägt aufgrund von fehlenden Privilegien (?) fehl:
A privileged instruction was executed at address 0x00401043.
Exception fielded by 0x00402320
EAX=0xffffffff EBX=0x00000108 ECX=0x77205c ...Ich bin als Admin angemeldet und habe UAC unter Vista abgeschaltet. Kann es am ersten Parameter der Funktion CreateFile liegen? Müsste dieser unter Vista nicht anders heissen?
Danke!
-
Das Problem ist der Opcode "out dx, al".
Der ist priviligiert, was heißt, daß er nicht im User-Mode (RPL=3) ausgeführt werden darf.
Das hat nichts mit Admin-Rechten oder UAC zu tun.