#include<Windows.h>
#include<iostream>
#include<TCHAR.h>
int main()
{  using namespace std;
  HANDLE hFile = CreateFile(TEXT("E:\\abc.rar"),GENERIC_WRITE | GENERIC_READ,FILE_SHARE_READ, NULL,CREATE_ALWAYS, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
  if(hFile==NULL)
    cout<<"error";
  DWORD dwBytesInBlock = GetFileSize(hFile,NULL);//得到文件的大小
  HANDLE hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, dwBytesInBlock, NULL); 
  LPVOID pbFile = (LPVOID)MapViewOfFile( hFileMapping, FILE_MAP_ALL_ACCESS, 0,0, dwBytesInBlock);
  if(pbFile)
  {
    cout<<"MapViewOfFile is ok..";
  }
  CloseHandle(hFile);
  return 0;
好像映射不成功!!谁能告诉我怎么验证是否映射成功呢

解决方案 »

  1.   

    CREATE_ALWAYS->OPEN_EXISTING
    估计文件有,但你这样把原来的覆盖了,导致大小为0
      

  2.   

    你看看是哪个函数失败了撒。你这样说。估计很难断定。你必须调试看看,看哪个函数失败了,然后通过GetLastError来查看原因!
      

  3.   

    if(hFile==NULL)
    ->
    if(hFile!=INVALID_HANDLE_VALUE)
      

  4.   

    CREATE_ALWAYS->OPEN_EXISTING
    估计文件有,但你这样把原来的覆盖了,导致大小为0两个原因
      

  5.   

    你单步跟一下看看是哪句出的问题
    然后GetLastError看看是什么原因
      

  6.   

    if(hFile==NULL)  HANDLE是什么类型啊?  指针么?楼主映射 是指 能够 操作 自己创建的文件么?
    -----学习中-----
      

  7.   

    $err,hr 0x000003ee 文件所在的卷已被外部改变,因此打开的文件不再有效。  unsigned long这是错误报告
      

  8.   

    0x000003ee 文件所在的卷已被外部改变,因此打开的文件不再有效
      

  9.   

    你试试换个路径或换个扩展名
    我觉得可能是rar的问题