Sto provando a scrivere sulle porte 0x60 e 0x64, senza fortuna.Come scrivere sulle porte I/O in Windows XP? (Delphi7)
codice Delphi:
procedure PortOut(IOport: WORD; Value: BYTE); assembler; register;
asm
XCHG DX,AX
OUT DX,AL
end;
Dopo aver chiamato PortOut, ottengo un'istruzione privilegiata EPrivilege un'eccezione, perché IN
e OUT
può eseguire solo come Ring0.
Mi piacerebbe sapere come ottenere i privilegi Ring0 come un'applicazione o come scrivere sulle porte 0x60 e 0x64 utilizzando una libreria esterna esistente.
Ho risolto il problema più velocemente usando la risposta di stukelly; alexandrul ha anche pubblicato una risposta perfettamente funzionante. – Tom
Se si stanno utilizzando le varie DLL della porta di uscita, non è stato risolto il problema. Ti sei solo scavato più a fondo in esso. Prevedo un sacco di BSOD (o qualsiasi cosa li abbia sostituiti in Windows 7) nel futuro del software. –
@ttmrichter In realtà, IO.DLL funziona incredibilmente bene (tranne che è solo per 32 bit e l'autore ha detto che sarebbe molto difficile crearne uno per x64 e che non si preoccupi). Non ho avuto alcun problema e tutti sono contenti del risultato su Windows 2000, XP e 7. – Tom