最近在2440上写了motorola L6我手机的USB驱动. 现在驱动能够被加载. 也能读取数据和设备描述符等. 但是有一个问题就是每次拔出我的设备时候. CE系统不调用我的回调函数. 以下是我注测回调函数的过程. 这种现象导致我手机拔出了. 但系统并没有释放USB设备资源. 请教在CE下搞过USB驱动的DX帮看看是什么原因导致不能调用回调函数. RETAILMSG(1, (TEXT("Activate Device! \r\n"))); //激活流驱动接口,使应用程序能够以File API的方式来访问 pDrv->hStreamDevice = ActivateDevice (wsSubClassRegKey, (DWORD)pDrv);
if (pDrv->hStreamDevice) { // register for USB callbacks //在设备拔出时由系统回调 if (lpUsbFuncs->lpRegisterNotificationRoutine (hDevice, USBDeviceNotificationCallback, pDrv)) { // Accept this device as our own *fAcceptControl = TRUE; } else { RETAILMSG(1, (TEXT("Can't register for USB Callbacks! rc=%d\r\n"), GetLastError())); } } else { RETAILMSG(1, (TEXT("Can't activate stream device! rc=%d\r\n"), GetLastError())); } |