WriteFile()为什么总是失败?异常代码6,无效的句柄

WriteFile()为什么总是失败?错误代码6,无效的句柄
DWORD   dw=10;
HANDLE   hh=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,1024,NULL);//这个句柄不是NULL

if(hh==NULL)MessageBox(0, "创建映射文件失败! ",0,0);   //

if(!WriteFile(hh, "asdfasdfasdf ",10,&dwLen,0))
{  
dwLen=GetLastError();   //这里总是返回6,说句柄无效
char   cc[100];
sprintf(cc, "%d ",dwLen);
MessageBox(0,cc, "写入失败! ",0);
}
CloseHandle(hh);


请问这是为什么?

------解决方案--------------------
CreateFileMapping是映射,直接CreateFile
------解决方案--------------------
楼上说的对

你这个是映射 不能WriteFile的
------解决方案--------------------
内存映射文件不是这么使用的,贴一段代码让你看看:
LPSTR lpData;
hMapping=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,
PAGE_READWRITE,0,BUFFER_SIZE, "MYSHARE ");
if(hMapping==NULL)
{
AfxMessageBox( "CreateFileMapping() failed. ");
return;
}

// 将文件的视图映射到一个进程的地址空间上,返回LPVOID类型的内存指针.
lpData=(LPSTR)MapViewOfFile(hMapping,FILE_MAP_ALL_ACCESS,0,0,0);
if(lpData==NULL)
{
AfxMessageBox( "MapViewOfFile() failed. ");
return;
}

// 给这段映像内存写数据.
sprintf(lpData,m_strFileMap);

// 释放映像内存.
UnmapViewOfFile(lpData);
创建好内存映射文件后,必须调用MapViewOfFile讲文件映射到某个地址上,如果创建是指定了文件句柄就要映射到文件地址,没有的话就要映射到某个内存地址。