阅读:1612回复:6
关于ce6.0插拔存储设备盘符消逝的问题
有没有做CE6.0朋友..我发现,SD 拔掉的时候,Device里盘符总是延迟4秒钟左右才消逝(5.0可以很快消逝),USB HOST 外接u盘被拔掉时也是这样........
有没有人了解这个情况? |
|
沙发#
发布于:2008-03-19 16:20
maoRe:关于ce6.0插拔存储设备盘符消逝的问题
引用楼主werna于2008-03-19 10:57发表的 关于ce6.0插拔存储设备盘符消逝的问题 : 我两个都用过,都要4-5秒才消失。 而且5.0和6.0用的是同样的架构, 不知道你5.0用的架构和6.0是否一样? |
|
|
板凳#
发布于:2008-03-25 09:36
应该是一个样架构.,不过我手上有一个现成的5.0的方案..不存在这样的问题,不知道你说的5.0也 存在这个问题是怎么回事哦,测试人员拿这个说事啊..
|
|
地板#
发布于:2008-03-25 11:02
这个好像是正常的,我不知道为啥。如果用微软的架构卸载文件系统比较慢。
如果你5.0不是用微软的架构的话,那就会很快。。 而6.0用的是微软的架构就会消失较慢。。可以确认一下架构是否一样?? 我的5.0也需要拔掉后也需要4---5秒中才能消失。 |
|
|
地下室#
发布于:2008-03-25 22:44
你可以试着在ProcessCardRemoval()函数:
void ProcessCardRemoval( void *pContext ) { PSDH_HARDWARE_CONTEXT pHCDevice = (PSDH_HARDWARE_CONTEXT)pContext; PSD_BUS_REQUEST pRequest; // current request if( pHCDevice->DevicePresent ) { DbgPrintZo(SDH_INTERRUPT_ZONE, (TEXT("CardDetectIstThread: Card Removal Detected! \n"))); // mark that the card has been removed pHCDevice->DevicePresent = FALSE; // indicate the slot change SDHCDIndicateSlotStateChange(pHCDevice->pHCContext, 0, DeviceEjected); // shut off clock first SDClockOff(pHCDevice); // Complete any pending request if((pRequest = pHCDevice->pCurrentRequest) != NULL) { ALL_INTERRUPTS_OFF(pHCDevice); // if we were doing a DMA transfer, stop the DMA and reset the interrupt status if( pHCDevice->fDMATransfer ) { pHCDevice->fDMATransferCancelled = TRUE; pHCDevice->pDMARegisters->dcsr[pHCDevice->dwDmaChannel] &= !(DCSR_RUN | DCSR_STOPIRQEN); if( !(pHCDevice->fDMAUsingDriverBuffer) ) { // we use client provided DMA buffer. Unlock the memory pages where it is located. if( pHCDevice->pClientBuffer ) { UnlockPages( pHCDevice->pClientBuffer, pHCDevice->dwClientBufferSize ); pHCDevice->pClientBuffer = NULL; pHCDevice->dwClientBufferSize = 0; } } #ifdef DEBUG pHCDevice->fDMATransferInProgress = FALSE; #endif InterruptDone(pHCDevice->dwDmaSysIntr); } IndicateBusRequestComplete(pHCDevice->pHCContext, pRequest , SD_API_STATUS_DEVICE_REMOVED); } // turn the Multimedia Card power off MMCPowerControl( FALSE ); } RemoveDirectory(_T("SDMMC Disk")); // deletes an existing empty directory } 添加RemoveDirectory(_T("SDMMC Disk")); // deletes an existing empty directory 这个应该可以解决你的问题。 |
|
|
5楼#
发布于:2008-04-02 13:43
楼上的兄弟,你的RemoveDirectory能成功吗?
我的返回"拒绝访问"..... |
|
6楼#
发布于:2008-04-02 22:44
在reginit里面找pnpunloaddelay,把那个注册表项的值改小就行.
|
|
|