2012-07-09 33 views
2

我可以像這樣簡單地在Ubuntu中用D訪問並行端口。D在windows下訪問並行端口

import std.stdio; 
import core.bitop; 

// parallel port address 
const uint port = 0x0c000; 

void main() 
{ 
    /* 
     permission related stuff under linux 
    */ 

    /* data */ 
    ubyte data = 0b_11111111; 
    outp(port, data); 
} 

但我想讀取和寫入並行端口上的窗口。當我嘗試此代碼時,我收到此錯誤消息。

object.Error: Privileged Instruction 
---------------- 
41377C 
4135F3 
4025BC 
4021B3 
4BD6F9 
1553C6 
---------------- 

有沒有一種簡單的方法來訪問Windows上的並行端口使用D?謝謝..

回答

3

Windows不授予用戶模式程序的直接硬件訪問權限。您需要編寫一個驅動程序(.sys文件),最有可能的是使用C語言(使用WINDDK)。您還需要購買代碼簽名證書以允許您的驅動程序在64位Windows版本上運行(或者如果您只需要在計算機上運行它,則禁用驅動程序簽名)。

+0

我下載了Windows Driver Kit 7.1.0。但我對C和Windows驅動程序編程一無所知。坦率地說,我在Ubuntu下編程相關的工作。但英特爾尚未發佈新的計算機的Ubuntu圖形驅動程序。我想有些人已經爲並行端口編寫了設備驅動程序。我下載了這個[這個設備驅動程序](http://retired.beyondlogic.org/porttalk/porttalk.htm),它似乎工作。我想要做的是用並行端口控制LED。但是我還沒有在麪包板上嘗試過它。你的回答幫了我很多。非常感謝。 – Erdem 2012-07-09 10:25:35