引用: 引用 2 楼 paul_chao 的回复:
mbf_dll.dll?? 這是哪一個驅動??
Paul, Chao @ Techware
引用: 引用 1 楼 oneonce 的回复:
LocalAlloc(LPTR,sizeof(struct pointer))????
pUSBD = (struct指针类型)LocalAlloc(LPTR, sizeof(struct));
引用: 引用 4 楼 visualthinking 的回复:
试过了,
pPDD->lpEndPoint = (PUSB_ENDPOINT_DESCRIPTOR)LocalAlloc(LPTR,
sizeof(USB_ENDPOINT_DESCRIPTOR));
还是一样
引用: 引用 7 楼 oneonce 的回复:
pPDD开始都没有申请内存就开始使用了,不异常都奇怪了,
而且你最好在usbFuncs->lpGetDeviceInfo之后才申请内存,要不然读什么描述否都是空谈。
引用: 引用 7 楼 oneonce 的回复:
pPDD开始都没有申请内存就开始使用了,不异常都奇怪了,
而且你最好在usbFuncs->lpGetDeviceInfo之后才申请内存,要不然读什么描述否都是空谈。
引用: 引用 8 楼 visualthinking 的回复:
引用 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时才出错
引用: 引用 13 楼 oneonce 的回复:
下面是我的USB驱动:
接口描述如(一个USB可能有多个接口,所以会有pUSBD->bCurrentInterfaceIdx)
pInterface = &(pUSBD->lpDeviceInfo->lpActiveConfig->lpInterfaces[pUSBD->bCurrentInterfaceIdx]);
端点描述符(一个接口下面可能有多个端点,所以会有j表示那个接口,k表示那个端点)
pEndpoint = pUSBD->lpDeviceInfo->lpActiveConfig->lpInterfaces+j)->lpEndpoints+k
主要是看你是不是对USB描述符和这个结构体理解的问题。