非常奇怪的问题啊.   是这样的, 我在做一个文件监测的程序,是dll 模式, 里面首先启动一个函数将所有可用的硬盘盘符搜索出,并把创建的handle传给线程参数, 如下:
typeedf struct _MYSEND{
   HANDLE handle;
   char m_dir[MAX_PATH];
}MYSEND,*pMYSEND;
MYSEND* psend;
DWORD mysend=0;HANDLE m_handle[26];
DWORD m_handlecount=0;
以上数据定义为了全局变量;
   下面的是dll 启动函数内的内容:  
   psend=new MYSNED[MAX_PATH];
   m_handle[m_handlecount] = CreateFile(
             FilePath,  
             FILE_LIST_DIRECTORY, 
             FILE_SHARE_READ|FILE_SHARE_DELETE,
             NULL,  
             OPEN_EXISTING,    
             FILE_FLAG_BACKUP_SEMANTICS,  
                       NULL    );
     if((INVALID_HANDLE_VALUE != m_handle[m_handlecount])
                    && (NULL != m_handle[m_handlecount]))
     {
         psned[m_send].handle=m_handle[m_handlecount];
          strcpy(psend[m_sned].m_dir, FILEPATH);
_beginthreadex(NULL, 0, GET, (void*)&psend[m_send],NULL,0,NULL);
m_handlecount++; m_send++;
}
}这样的话, 加入我的电脑又c, d ,e ,f 四个盘, 那么 GET 函数会调用四次, 在GET线程函数里面通过使用ReadDirectoryChangesW函数将四个硬盘盘符都设置为监听模式, 在GET函数中首先用结构获得传递的参数, 然后把参数里面的handle 这个HANDLE设为监听, 在启动的时候通过output窗口可以知道四个线程启动的时候,在线程启动的最开始能够获得相应的handle 跟mdir值的, 但是为什么都不能将其设置为监听模式呢?   我发现个问题就是如果给GET 传递的参数为m_handle[m_handlecount] 的时候就可以成功的把四个盘符都设为监听模式, 但是这样的话最终获得的文件变化里面没有根目录信息,没有太大意义啊, 那位大哥能给我点帮助啊. 帮帮忙啦.