C 遍歷驅動列表(應用層下)

2021-09-25 12:16:19 字數 1343 閱讀 9821

上**咯 ~

#include

"stdafx.h"

#include

#include

#include

#include

//pathfileexists

#pragma comment(lib, "psapi.lib")

#pragma comment(lib, "shlwapi.lib")

#define array_size 1024

int_tmain

(int argc, _tchar* ar**)

;// 驅動程式位址列表陣列

int cdrivers =0;

// 驅動個數if(

enumdevicedrivers

(drivers,

sizeof

(drivers)

,&cbneeded)

&& cbneeded <

sizeof

(drivers)

)// enumdevicedrivers 檢索每個驅動檔案的載入位址

;// 驅動檔名

char szpath[array_size]=;

// 存放驅動檔案全路徑

char szsystempath[array_size]=;

// 存放 system32 資料夾路徑

cdrivers = cbneeded /

sizeof

(lpvoid)

;// 驅動個數

//得到c:\windows\system32\dbghelp.dll

getsystemdirectory

(szsystempath,

sizeof

(szsystempath));

strcat_s

(szsystempath,

"\\dbghelp.dll");

for(

int i =

0; i < cdrivers; i++)}

}getchar()

;return0;

}

**基本上每一句都做了注釋,應該蠻好理解的,效果圖如下:

最後感謝joychou老哥提供的思路:

應用層到驅動層

1 應用層 vfs 驅動層 硬體層 2 應用層的程式要想跟底層的硬體打交道必須要有裝置檔案 在應用層通過open開啟乙個裝置檔案時,在vfs層會建立inode結構體和file結構體,前者是靜態的描述裝置的一些資訊 如 裝置號,節點指標,裝置型別以及cdev結構體 後者則會描述裝置型別的一些動態資訊 ...

驅動與應用層簡單訊息通訊

驅動sys irp1.h include 採用緩衝區記憶體模式ioctl,my dvc buffered code是自定義的控制碼 define my dvc buffered code ulong ctl code file device unknown,0x900,method buffered...

驅動與應用層簡單訊息通訊

驅動sys irp1.h include 採用緩衝區記憶體模式ioctl,my dvc buffered code是自定義的控制碼 define my dvc buffered code ulong ctl code file device unknown,0x900,method buffered...