驅動程式和應用程式通訊方法

2021-04-29 18:01:41 字數 1196 閱讀 8852

驅動程式必須與應用程式進行通訊,才能最終達到應用程式控制裝置的目的,不然驅動有qiu用。

要通訊就涉及到3個方面:

1.應用程式與驅動程式通訊

2.驅動程式與應用程式通訊

3.資料傳輸

下面分別討論

1。應用程式與驅動程式通訊

1-1 應用程式實現與驅動通訊的過程:

---用createfile開啟裝置,

---用deviceiocontrol和驅動通訊,包括從驅動讀資料和寫資料2種情況

也可以使用readfile從驅動讀資料或用writefile寫資料給驅動

---退出使用使用closehandle關閉裝置

win32函式對應的irp主功能**

creatfile     irp_mj_create

readfile        irp_mj_read

writefile      irp_mj_write

deviceiocontrol    irp_mj_device_control

closehandle   irp_mj_close

1-2 開啟裝置

開啟裝置一般有2種方式:

---guid

---符號連線符(符號連線符可以理解為乙個快捷方式)

1-3 deviceiocontrol函式

2-2 驅動程式通訊的方法

---deviceiocontrol非同步完成

---win32事件

2-3 deviceiocontrol非同步完成

當應用程式呼叫deviceiocontrol函式時,驅動程式首先把此irp儲存,然後設法返回status_pending。在乙個事件發生後,驅動程式完成該irp。注意地方:由於irp是未決的,所以必須將此irp儲存,當應用程式退出時候,若irp仍未發生,必須取消該irp。(irql<=dispatch_level)

2-4 win32事件

應用程式建立乙個事件,直接將該事件控制代碼傳遞給驅動程式,然後等待驅動程式傳送事件訊息。驅動程式在獲得該事件指標後,在irql<=dispatch_level級別下的例程中設定事件訊號狀態來觸發應用程式。

3。驅動程式獲取應用程式資料緩衝區的方法

---deviceiocontrol時候,通過i/o控制命令中的資料訪問方式來決定。實際也就是共享buffer和建立乙個mdl。

---readfile/writefile時候同上

驅動程式和應用程式之間通訊

正文 q 請問有什麼方法實現驅動程式主動和應用程式進行實時通訊,而不用應用程式採用定時查詢的方法?比如驅動有一事件發生需要立即通知應用程式,或驅動程式需要向應用程式讀取一些內容.a 有乙個很容易的方式,在驅動程式和應用程式之間用乙個事件。在應用程式createfile的時候,驅動程式iocreate...

驅動程式與應用程式之間的通訊

驅動程式與應用程式之間的通訊 驅動程式必須與應用程式進行通訊,才能最終達到應用程式控制裝置的目的,不然驅動有qiu用。要通訊就涉及到3個方面 1.應用程式與驅動程式通訊 2.驅動程式與應用程式通訊 3.資料傳輸 下面分別討論 1。應用程式與驅動程式通訊 2。驅動程式與應用程式通訊 2 1 驅動程式在...

應用程式與驅動程式6種通訊方式

應用程式與驅動程式6種通訊方式 於網際網路,交流學習 應用程式與驅動程式通訊方式據我所知,細分可以分6種,readfile,wirtefile方式的緩衝區裝置讀寫,直接方式讀寫,和其他方式讀寫。io裝置控制操作 即 devicecontrol 的緩衝記憶體模式ioctl,直接記憶體方式的ioctl,...