typedef struct _MYST
{
  int len;
  char data[255];
}MYST,*PMYST;
PMYST st;HANDLE hf = CreateFileMapping((HANDLE)0xFFFFFFFF, 
    NULL, PAGE_READWRITE, 0, sizeof(MYST), "mydata");

st=(PMYST)MapViewOfFile(hf, FILE_MAP_ALL_ACCESS, 0, 0, 0); ZeroMemory(st,sizeof(MYST)); 以上操作成功,这里非法操作?

解决方案 »

  1.   

    呵呵。
    必须保证st是个有效区域。
    此处st是个指针,并没有指向有效区域。分配给它一个,试一试看。
    注意释放。
    :)
      

  2.   

    看看MapViewOfFile返回的地址正确吗? 用VirtualQuery看看st的保护属性是什么?
      

  3.   

    地址正确,用st->len可以访问
      

  4.   

    1、检查你的 st 是否为 NULL
    2、看看这个 MapFile 是否存在:
    if(  GetLastError() == ERROR_ALREADY_EXISTS  )
    {
    }如果存在,而刚好他又没有 sizeof(MYST) 这么大
    那么 ZeroMemory 必定出问题。
    ================================================================
    Country roads, take me home to the place I belong, West
    0AVirginia, Mountain Mama. Take me home, country roads.
    ================================================================
      

  5.   

    你最好在每个API调用后,检查一下返回的结果;
    如果,不正确,调用GetLastError()查看一下出错代码。Good Luck!