了解U盘接口函数的前辈进

来源:百度知道 编辑:UC知道 时间:2024/06/25 01:51:15
我现在要用到U盘的弹出功能,网上大家都属可以用用,CM_Request_Device_Eject来实现,我看了一下MSDN,也就是第一个参数得到设备的实例化句柄比较难办,需要用SetupDiGetClassDevs来获得,我的问题就来了(我是基于MFC的)
1:事先我先在VC中包含了DDK中的一个路径(D:\Program Files\DDK1\inc\ddk\wdm\wnet,在TOOL->opion->)我定义了一个HDEVINFO变量来接受SetupDiGetClassDevs的返回值,但是系统报错竟然是在cfgmgr32.h中,这是为什么?是我把DDK的头文件包含的不对吗?还是其他的,恳请回答
2:DDK和VC怎怎么结合到一起?我仅仅用的是简单的几个函数
3:如果高人知道怎么用CM_Request_Device_Eject,可否给小弟介绍一下自己的见解,附上代码将不胜感激,再次谢过,没多少分了,全散了
我做第一步就有问题了,包含一个cfgmgr.h就做不到,怎么才能包含这么多头文件呢,这些头文件都是DDK中的,我吧DDK的路径给他还不行啊!?另外,前辈爱可以介绍一下DDK的版本问题,就是到现在DDK有多少个版本,怎么分的?
一楼的,说得好啊!这个确实没有问题,但是如果我包含
#include "cfgmgr32.h"
#pragma comment(lib,"cfgmgr32.lib")的话就有43个错误,我晕(前提是吧DDK的路径放在第一路径,放在第二路径的话就只有两个错误)error C2146: syntax error : missing ';' before identifier 'LOG_CONF'
d:\program files\ddk1\inc\wnet\cfgmgr32.h(122) : fatal error C1004: unexpected end of file found这两个很出名的错误,哥们帮忙看看啊!

我也初学,不过我下面的代码起码可以编译过去。

#include <initguid.h>
DEFINE_GUID (GUID_USB_DEVICE_ENUMERATOR_INTERFACE_CLASS,
0xA5DCBF10, 0x6530, 0x11D2, 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED);

#include "Setupapi.h"
#pragma comment(lib,"Setupapi.lib")

void CTestDiskDlg::OnButton2()
{
LPGUID pGuid = (LPGUID)& GUID_USB_DEVICE_ENUMERATOR_INTERFACE_CLASS ;
HDEVINFO hDev = SetupDiGetClassDevs((LPGUID) ( & GUID_USB_DEVICE_ENUMERATOR_INTERFACE_CLASS),0,0,DIGCF_PRESENT | DIGCF_INTERFACEDEVICE ) ;
if( INVALID_HANDLE_VALUE == hDev )
{
return ;
}