引用 7 楼 oneonce 的回复:
pPDD开始都没有申请内存就开始使用了,不异常都奇怪了,
而且你最好在usbFuncs->lpGetDeviceInfo之后才申请内存,要不然读什么描述否都是空谈。
//创建设备上下文
PDEVICECONTEXT pPDD = (PDEVICECONTEXT)LocalAlloc(LPTR,sizeof(DEVICECONTEXT));
if(pPDD==0)
{
RETAILMSG(1, (TEXT("Not enough memory!\r\n")));
SetLastError (ERROR_NOT_ENOUGH_MEMORY);
return FALSE;
}
这是我第一次调用LocalAlloc的地方,在异常位置的前面.
这次LocalAlloc之后,又给pPDD的成员付了值,才开始给Pipe和EndPoint分配内存.
但是这次LocalAlloc没有错,到后面LocalAlloc时才出错