本週時間比較松,花點時間玩了下usb驅動,入門而已,驅動開發肯定不會如此簡單的
下週開始搞乙太網移植,沒時間玩了
平台:vc++6.0+ddk_xp+driverstudio3.2
驅動部分:1
、安裝順序:
vc->ddk->driverstudio
2、安裝
ddk後
build environment
3、安裝
driverstudio
後,開啟
../driverworks/source
目錄下的
vc工程,編譯生成
vdw_wdm.lib
4、使用
driverwizard
生成驅動,編譯的時候注意設定
ddk的路徑 5
、關於ntstrsafe.lib
和csq.lib,在
sources
檔案中去掉即可 6
、initialize
的bug
,將10
進製改為
16進製制: 將
pipe1.initialize(m_lower, 1, 64);
pipe2.initialize(m_lower, 82, 64);
pipe3.initialize(m_lower, 83, 64);
改為:
pipe1.initialize(m_lower, 0x1, 64);
pipe2.initialize(m_lower, 0x82, 64);
pipe3.initialize(m_lower, 0x83, 64);7、
driverwizard
只是生成的乙個驅動框架,還需要自己新增一些實現**: 如將
ntstatus led_drvdevice::writepipe1_handler(kirp i)
函式改為如下:
ntstatus status = status_success;
ulong inputsize = i.ioctlinputbuffersize();
ulong outputsize = i.ioctloutputbuffersize();
pvoid inputbuffer = i.ioctlbuffer();
pvoid outputbuffer = null;
i.information() = 0;
if (inputbuffer == null)
else
else
}status %x/n", i, status);
return status;
應用程式部分:1
、guid
,使用驅動生成的
guid
,可以直接使用驅動的
inte***ce.h
這個檔案 2
、需要的標頭檔案:
#include
#include
#pragma comment(lib, 「setupapi.lib」)
#include
3、這部分是個人理解,僅參考,步驟如下:
a
、hardwaredeviceinfo=setupdigetclassdevs(pguid,
null,
null,// define no
(digcf_present | // only devices present
digcf_inte***cedevice),
將guid
傳入獲得相關硬體資訊
b
、setupdienumdeviceinte***ces ( hardwaredeviceinfo,
0, // we don't care about specific pdos
pguid,
numberdevices,
&deviceinfodata),
列舉對應此資訊的所有
device
c
、setupdigetinte***cedevicedetail(hardwaredeviceinfo,
&deviceinfodata,
null,// probing so no output buffer yet
0,// probing so output buffer length of zero
&requiredlength,
null),
第一次呼叫此函式,獲得
device長度
d
、setupdigetinte***cedevicedetail(hardwaredeviceinfo,
&deviceinfodata,
functionclassdevicedata,
predictedlength,
&requiredlength,
null),
第二次呼叫此函式,獲得
device名稱
e
、m_pipe =createfile(
pipename,
generic_read | generic_write,
file_share_read|file_share_write,
null,
open_existing,
0, null),
使用獲得的
device
名稱獲得控制代碼
f
、deviceiocontrol(m_pipe, writepipe1, send_msg, 64, null, 0, &lpsize, null)
,使用此函式寫
pipe1
10分鐘 深入less
三種方式引用less 瀏覽器引用 less.js link type text lesss node中使用 工程中使用 變數 key value在js中,條件語句中 可以使用 if,else,switch定義,less中語句中跟switch中case比較像。less 沒有像js中這樣的關鍵字,但是也...
10分鐘了解ZooKeeper
zookeeper是乙個開放原始碼的分布式應用程式協調服務,它包含乙個簡單的原語集,分布式應用程式可以基於它實現同步服務,配置維護和命名服務等。1.最終一致性 client不論連線到哪個server,展示給它都是同乙個檢視,這是zookeeper最重要的功能。2.可靠性 具有簡單 健壯 良好的效能,...
每天10分鐘 10 25
1.hadoop一般廣義和狹義分別指什麼 hadoop生態圈,hadoop軟體2.hadoop軟體哪三個組成 hdfs yarn mapreduce3.hdfs偽分布式的程序簡寫分別是什麼?nn,dn,snn4.yarn偽分布的程序簡寫分別是什麼?nm,rm5.nn節點是幹什麼的 記錄資料節點,維護...