2014-03-18 1 views
0

이 예제 http://msdn.microsoft.com/en-us/library/windows/desktop/aa366551(v=vs.85).aspx은 TCHAR을 전달하지만 DWORD를 어떻게 통과시킬 수 있습니까? 아래에서 시도했지만 'DWORD *'에서 'const wchar_t *'로 매개 변수 1을 변환 할 수 없습니다.매핑 된 파일에 DWORD * 전달

DWORD* pid=new DWORD[20]; 

    HANDLE hMapFile; 
    DWORD pBuf; 
    TCHAR szName[]=TEXT("Global\\mapFile"); 

    //il creez 
    hMapFile = CreateFileMapping(
     INVALID_HANDLE_VALUE, // use paging file 
     NULL,     // default security 
     PAGE_READWRITE,   // read/write access 
     0,      // maximum object size (high-order DWORD) 
     256,      // maximum object size (low-order DWORD) 
     szName);     // name of mapping object 

    if (hMapFile == NULL) 
    { 
     _tprintf(TEXT("Could not create file mapping object (%d).\n"), 
      GetLastError()); 
     return 1; 
    } 

    pBuf = (DWORD) MapViewOfFile(hMapFile, // handle to map object 
     FILE_MAP_ALL_ACCESS, // read/write permission 
     0,     
     0,     
     256);  

    if (pBuf == NULL) 
    { 
     _tprintf(TEXT("Could not map view of file (%d).\n"), 
      GetLastError()); 

     CloseHandle(hMapFile); 
     return 1; 

    } 

CopyMemory((LPVOID)pBuf, pid, (_tcslen(pid) * sizeof(TCHAR))); 

답변

0

MapviewOffile은 LPVOID를 반환합니다. 그것이 작동 다음 방법 : 당신은에서 CopyMemory`에`pBuf`을 통과 할 때 타입 변환 할 필요가 없습니다

DWORD* pBuf = (DWORD*) MapViewOfFile(hMapFile, // handle to map object 
    FILE_MAP_ALL_ACCESS, // read/write permission 
    0,     
    0,     
    256);  

if (pBuf == NULL) 
{ 
    _tprintf(TEXT("Could not map view of file (%d).\n"), 
     GetLastError()); 

    CloseHandle(hMapFile); 
    return 1; 

} 

CopyMemory((LPVOID)pBuf, pid, (20* sizeof(DWORD))); 
+0

()'. –

관련 문제