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.


Anmelden zum Antworten