我有一设备,物理设备对象名称为\Device\USBPDO-10,如何打开??

zhou1xp 2010-07-01 11:26:59
我用 hDevice = CreateFile(TEXT("\\\\.\\Device\\USBPDO-10"), // drive to open
0, // no access to the drive
FILE_SHARE_READ | // share mode
FILE_SHARE_WRITE,
NULL, // default security attributes
OPEN_EXISTING, // disposition
0, // file attributes
NULL);
打开失败,用
hDevice = CreateFile(TEXT("\\\\.\\USBPDO-10"), // drive to open
0, // no access to the drive
FILE_SHARE_READ | // share mode
FILE_SHARE_WRITE,
NULL, // default security attributes
OPEN_EXISTING, // disposition
0, // file attributes
NULL);
还是失败,哪位知道如何得到设备句柄,我没有安装DDK或者WDK
...全文
1234 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhou1xp 2010-07-01
  • 打赏
  • 举报
回复
我是USB口,串口没什么问题的
InitialJ 2010-07-01
  • 打赏
  • 举报
回复
GetLastError?
zhupf52 2010-07-01
  • 打赏
  • 举报
回复

http://www.magbarcode.com/tiaoma/80.html 可以按方法测试下。
zhou1xp 2010-07-01
  • 打赏
  • 举报
回复
不好意思,我没有说清楚,我的设备是指一个USB接口的条码扫描器,不是楼上想的窗口句柄
zhupf52 2010-07-01
  • 打赏
  • 举报
回复
方法一
在处理WM_PAINT消息时,使用这种方法。它涉及BeginPaint和EndPaint两个函数,这两个函数需要窗口句柄(作为参数传给窗口消息处理程序)和PAINTSTRUCT结构的变量(在WINUSER.H表头文件中定义)的地址为参数。Windows程序写作者通常把这一结构变量命名为ps并且在窗口消息处理程序中定义它:PAINTSTRUCT ps ;
在处理WM_PAINT消息时,窗口消息处理程序首先呼叫BeginPaint。BeginPaint函数一般在准备绘制时导致无效区域的背景被擦除。该函数也填入ps结构的字段。BeginPaint传回的值是设备内容句柄,这一传回值通常被保存在叫做hdc的变量中。它在窗口消息处理程序中的定义如下:HDC hdc;
HDC数据型态定义为32位的无正负号整数。然后,程序就可以使用需要设备内容句柄的TextOut等GDI函数。呼叫EndPaint即可释放设备内容句柄。

方法二
虽然最好是在处理WM_PAINT消息处理期间更新整个显示区域,但是您也会发现在处理非WM_PAINT消息处理期间绘制显示区域的某个部分也是非常有用的。或者您需要将设备内容句柄用于其它目的,如取得设备内容的信息。
要得到窗口显示区域的设备内容句柄,可以呼叫GetDC来取得句柄,在使用完后呼叫ReleaseDC:
hdc = GetDC (hwnd) ;
使用GDI函数
ReleaseDC (hwnd, hdc) ;
zhupf52 2010-07-01
  • 打赏
  • 举报
回复
http://www.pudn.com/downloads42/sourcecode/windows/control/detail144162.html
wocow3 2010-07-01
  • 打赏
  • 举报
回复
要在APP中直接用UNC路径打开设备,那得驱动显式的给设备IoCreateSymbolicLink创建符号链接,设备名不能在APP中直接使用
如果知道驱动的interfaceGUID,就用SetupXX函数查找设备
zhou1xp 2010-07-01
  • 打赏
  • 举报
回复
而且我最后是要在CE下使用,在PC上做测试,所以DDK的方法不太适用
zhou1xp 2010-07-01
  • 打赏
  • 举报
回复
呵呵,没办法,我自己又没装DDK,我是在驱动信息中去找的设备信息
sanguomi 2010-07-01
  • 打赏
  • 举报
回复
NTSTATUS
IoGetDeviceObjectPointer(
IN PUNICODE_STRING ObjectName,
IN ACCESS_MASK DesiredAccess,
OUT PFILE_OBJECT *FileObject,
OUT PDEVICE_OBJECT *DeviceObject
)
djjs280 2010-07-01
  • 打赏
  • 举报
回复
错误3是ERROR_PATH_NOT_FOUND
你这个设备名是从哪里得到的?建议用WinObj看看是不是真的存在这个设备,按道理第一种打开方法没什么问题
Eleven 2010-07-01
  • 打赏
  • 举报
回复
3: The system cannot find the path specified.
路径没写对。。。
zhou1xp 2010-07-01
  • 打赏
  • 举报
回复
恩,第二个参数已经修改,但还是出错,错误返回值为3, 我晕,这个产品的公司真他妈无语,驱动手册都没有一个
Eleven 2010-07-01
  • 打赏
  • 举报
回复
GetLastError()?返回值什么?
nscboy 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhupf52 的回复:]
http://www.magbarcode.com/tiaoma/80.html 可以按方法测试下。
[/Quote]
获取到失败的原因后再来具体分析啊.
第二个参数修改为GENERIC_ALL或者GENERIC_READ|GENERIC_WRITE试试
zhou1xp 2010-07-01
  • 打赏
  • 举报
回复
晕,没人来,顶下
设备树(device tree)机制是Linux内核从linux-3.x版本开始引进的一种机制,目的是解决内核源码的arch/arm目录下代码混乱的问题:随着ARM生态的快速发展,在内核源码的arch/arm目录下,存放着几十种arm芯片和几百个开发板相关的源文件,很多开发板和处理器的中断、寄存器等相关硬件资源都在这个目录下以.c或.h的文件格式定义。而对于内核来说,与这些硬件耦合,会导致内核代码混乱不堪,每个开发板上运行的内核镜像都必须单独编译配置,无法通用。什么时候Linux内核能像Windows镜像那样,无论你的电脑什么配置,一个Windows安装包,都可以直接下载安装运行呢?设备树机制,实现了Linux内核和硬件平台的解耦:每个硬件平台的硬件资源使用一个设备树文件(xxx.dts)来描述,而不是在arch/arm下以.c 或 .h 文件来定义。Linux内核是一个通用的内核,在启动过程中,在通过解析设备树中的硬件资源来初始化某个具体的平台。 引入设备树后,很多和内核驱动开发的工作也发生了变化:以往驱动工程师关注的头文件宏定义、寄存器定义,现在这些基本上不用关注,关注的重点则转向了如何根据硬件平台去配置和修改设备树文件。很多驱动的编程接口也发生了变化,开始慢慢使用device tree提供的编程接口去开发驱动。本期课程主要面向嵌入式开发人员,分享Linux下驱动开发所需要的设备树知识和必备技能

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧