TO gooogleman: " com open 是应用调用的 ,不是加载调用的。"
因为目前在调试系统驱动阶段,所以我可以肯定是没有应用[自已写的]所调用,所以我想除了系统本身的调用之外,再就是驱动之间的调用了。而且我在整个代码中,搜索没有看到CreateFile(L"COM2:"...)的操作,所以再次请教,有没有什么方法可以定位到谁调用了打开操作。或者是有另有玄机,COM_OPEN 可以不通过CreateFile这种方式也可以调用?
....
++(pSerialHead->OpenCnt);
而关闭时,HWClose未被调用,代码如下:
// If we are closing the last open handle, then close PDD also
if ( !pSerialHead->OpenCnt ) {// 跟踪到OpenCnt = 2 即我前面提到的Open两次,才执行一次关闭
RETAILMSG (myset, (TEXT("About to call HWClose\r\n")));
if ( pHWObj )
pHWObj->pFuncTbl->HWClose(pSerialHead->pHWHead);
RETAILMSG (myset, (TEXT("Returned from HWClose\r\n")));
因此,在我未通过应用程序打开COM2口时,这时一旦有数据向COM2[DMA_Enable]发送时,过段时间整个系统很慢。我想是COM2的RX_Buffer满了的原因。