测试程序代码如下:
请各位给指点指点.//多线程写入
void Cfilemap_testDlg::OnBnClickedMultthreadfile()
{ //创建文件
HANDLE hFile = CreateFile( "F:/test.txt",
                            GENERIC_WRITE | GENERIC_READ, 
    0, 
NULL, 
OPEN_EXISTING, 
FILE_ATTRIBUTE_NORMAL, 
NULL); //得到文件大小
DWORD dwFileSize = GetFileSize(hFile, NULL); //创建文件hFile文件对象的映射对象 hFileMap
    HANDLE hFileMap = CreateFileMapping(hFile, 
                                    NULL, 
    PAGE_READWRITE,           //可读写
                                        0, 
    dwFileSize + sizeof(WCHAR),//文件大小
    NULL);
//将文件数据影射到进程的地址空间
PBYTE pvFile = (PBYTE) MapViewOfFile(hFileMap, 
                                     FILE_MAP_WRITE,
         0,
         0, 
         0);
    //开始操作文件
    PBYTE pchANSI =  pvFile;
for( int i = 0 ; i < 1000; i++)
{
*pchANSI++;
CreateThread( NULL, 0, ThreadFunc, LPVOID(pchANSI), 0, NULL);
}    //文件操作完成
//撤消进程地址空间中的文件数据影射
UnmapViewOfFile(pvFile);
//关闭文件
    CloseHandle(hFileMap);
   // Remove trailing zero character added earlier.
    SetFilePointer(hFile, dwFileSize, NULL, FILE_BEGIN);
    SetEndOfFile(hFile);
    CloseHandle(hFile);
}
//线程函数
DWORD WINAPI Cfilemap_testDlg::ThreadFunc( LPVOID lpParam )
{
PBYTE pchANSI = (PBYTE)lpParam; *pchANSI = 'a'; return 0;
}