南昌网站关键词推广,网站首页布局设计原理,兰州网络推广新手,自适应好还是响应式网站好利用文件IO相关的Wn32API对设备进行“打开”和“关闭”操作。要打开设备#xff0c;必须通过设备的名字才能得到该设备的柄。前面介绍过#xff0c;每个设备都有设备名称#xff0c;如HelloDDK驱动程序的设备名为“Device\\MyDDKDevice”#xff0c;但是设备名无法被用户模… 利用文件IO相关的Wn32API对设备进行“打开”和“关闭”操作。要打开设备必须通过设备的名字才能得到该设备的柄。前面介绍过每个设备都有设备名称如HelloDDK驱动程序的设备名为“Device\\MyDDKDevice”但是设备名无法被用户模式下的应用程序查询到设备名只能被内核模式下的程序査询到。 在应用程序中设备可以通过符号链接进行访问。驱动程序通过loCreateSymbolicLink函数创建符号链接。HelloDDK驱动程序的设备所对应的符号链接是“\??\HelloDDK。在编写程序时符号链接的写法需要稍微改一下将前面的“\??\”改为“\\.\”。因此符号链接“\??\HelloDDK”就变成了“\\.\HelloDDK”,写成C语言的字符串就是“\\\\.\\HelloDDK。 下面的代码演示了如何利用 CreateFile 来打开设备句柄以及如何利用 CloseHandle 关闭设备句柄。在打开和关闭设备句柄的时候操作系统内部会创建IRP并将IRP发送相应的派遣函数中。
#include windows.h
#include stdio.hint main()
{// 打开设备句柄会触发IRP_MJ_CREATEHANDLE hDevice CreateFile(L\\\\.\\HelloDDK, GENERIC_READ | GENERIC_WRITE,0, // 非共享NULL, //没有使用安全描述符OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); // 没有模板if (hDevice INVALID_HANDLE_VALUE){printf(Failed to obtain fiel handle to deive:%s with win32 error code: %d\n,MYWDMDevice, GetLastError());return 1;}CloseHandle(hDevice);return 0;
}