USB HID开发CreateFile得不到句柄解决方案

USB HID开发CreateFile得不到句柄
如题。 
SetupDiGetDeviceInterfaceDetail返回正确值。但是发现DevicePath返回的是一个乱码。 
跟踪SP_DEVICE_INTERFACE_DETAIL_DATA结构的下DevicePath,发现它是一个CHAR数组,但其数组元素的个数ANYSIZE_ARRAY (define at winnt.h)却是1。 
我想CreateFile得不到句柄是不是和设备路径无法正确读取有关。要如何解决,还望大虾帮忙啊。

------解决方案--------------------
SetupDiGetDeviceInterfaceDetail要调用两次,第一次要把第3三个参数设置为NULL以获得返回数据长度到第4个参数,然后再用这个长度进行第二次调用。

DWORD Length = 0;

SetupDiGetDeviceInterfaceDetail(hDevInfo,
&DeviceInterfaceData,
NULL,
0,
&Length,
NULL);
pDeviceInterfaceDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(Length);
pDeviceInterfaceDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA); //MUST BE!!!

SetupDiGetDeviceInterfaceDetail(hDevInfo,
&DeviceInterfaceData,
pDeviceInterfaceDetailData,
Length,
NULL,
NULL))

返回的路径中一定会有HID,PID和VID等字符串。