我用 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

解决方案 »

  1.   

    http://www.pudn.com/downloads42/sourcecode/windows/control/detail144162.html
      

  2.   

    方法一 
    在处理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)   ;
      

  3.   

    不好意思,我没有说清楚,我的设备是指一个USB接口的条码扫描器,不是楼上想的窗口句柄
      

  4.   


    http://www.magbarcode.com/tiaoma/80.html  可以按方法测试下。
      

  5.   

    我是USB口,串口没什么问题的
      

  6.   

    获取到失败的原因后再来具体分析啊.
    第二个参数修改为GENERIC_ALL或者GENERIC_READ|GENERIC_WRITE试试
      

  7.   

    3: The system cannot find the path specified. 
    路径没写对
      

  8.   

    错误3是ERROR_PATH_NOT_FOUND
    你这个设备名是从哪里得到的?建议用WinObj看看是不是真的存在这个设备,按道理第一种打开方法没什么问题
      

  9.   

    NTSTATUS
    IoGetDeviceObjectPointer(
        IN PUNICODE_STRING ObjectName,
        IN ACCESS_MASK DesiredAccess,
        OUT PFILE_OBJECT *FileObject,
        OUT PDEVICE_OBJECT *DeviceObject
        )
      

  10.   

    呵呵,没办法,我自己又没装DDK,我是在驱动信息中去找的设备信息
      

  11.   

    而且我最后是要在CE下使用,在PC上做测试,所以DDK的方法不太适用
      

  12.   

    要在APP中直接用UNC路径打开设备,那得驱动显式的给设备IoCreateSymbolicLink创建符号链接,设备名不能在APP中直接使用
    如果知道驱动的interfaceGUID,就用SetupXX函数查找设备