Передача DWORD* в сопоставленный файл

В этом примере http://msdn.microsoft.com/en-us/library/windows/desktop/aa366551(v=vs.85).aspx передает TCHAR, но как заставить его передавать DWORD? Я пробовал ниже, но не могу преобразовать параметр 1 из «DWORD *» в «const wchar_t *».

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)));

person George Irimiciuc    schedule 18.03.2014    source источник


Ответы (1)


Mapviewoffile возвращает LPVOID. Следующий способ будет работать:

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)));
person D'artanian    schedule 18.03.2014
comment
Вам не нужно приводить типы при передаче pBuf в CopyMemory(). - person Remy Lebeau; 19.03.2014