Tôi đang cố gắng ghi vào cổng 0x60 và 0x64, không có may mắn.Cách ghi vào cổng I/O trong Windows XP? (Delphi7)
mã Delphi:
procedure PortOut(IOport: WORD; Value: BYTE); assembler; register;
asm
XCHG DX,AX
OUT DX,AL
end;
Khi gọi PortOut, tôi nhận được một EPrivilege hướng dẫn Privileged ngoại lệ, bởi vì IN
và OUT
chỉ có thể thực hiện như Ring0.
Tôi muốn biết cách tôi có thể nhận được đặc quyền Ring0 của tôi một ứng dụng hoặc cách tôi có thể ghi vào cổng 0x60 và 0x64 bằng một số thư viện bên ngoài hiện có.
Tôi đã giải quyết vấn đề nhanh hơn bằng câu trả lời stukelly của; alexandrul cũng đăng một câu trả lời hoàn hảo chức năng. – Tom
Nếu bạn định sử dụng các cổng DLL khác nhau, bạn chưa giải quyết được vấn đề. Bạn chỉ đào sâu hơn vào nó. Tôi thấy rất nhiều BSOD (hoặc bất cứ thứ gì đã thay thế chúng trong Windows 7) trong tương lai của phần mềm của bạn. –
@ttmrichter Trên thực tế, IO.DLL hoạt động cực kỳ tốt (ngoại trừ việc nó chỉ dành cho 32-bit và tác giả cho biết sẽ rất khó để tạo một cái cho x64 và anh ấy không làm phiền). Tôi đã không có bất kỳ vấn đề ở tất cả và mọi người đều hài lòng với kết quả trên Windows 2000, XP và 7. – Tom