Проблема копирования данных PBYTE (данные изображения)

Я пытаюсь скопировать данные изображения внутри вызова плагина.
В определенной ситуации, из следующего вызова, я должен скопировать источник (pSrcBitmap) в пункт назначения (ppbResult).
Это должно быть супер просто — копировать память.
Но … я получаю ошибку.

Я покажу истинный код ниже, но только соответствующую часть:

HRESULT __stdcall COemUni::ImageProcessing(PDEVOBJ pdevobj, PBYTE pSrcBitmap,
PBITMAPINFOHEADER pBitmapInfoHeader, PBYTE pColorTable,
DWORD dwCallbackID, PIPPARAMS pIPParams, OUT PBYTE *ppbResult)
{
UNREFERENCED_PARAMETER(pdevobj);
UNREFERENCED_PARAMETER(pColorTable);
UNREFERENCED_PARAMETER(dwCallbackID);
UNREFERENCED_PARAMETER(pIPParams);

WORD bitCount = 1;
DWORD stride = (((pBitmapInfoHeader->biWidth * bitCount) + 31) & ~31) >> 3;
DWORD biSizeImage = stride * pBitmapInfoHeader->biHeight;

// This is the issue - it is what I am trying:
*ppbResult = (PBYTE)LocalAlloc(LPTR, biSizeImage * sizeof(BYTE));
CopyMemory((*ppbResult), (pSrcBitmap), biSizeImage * sizeof(BYTE));

// To check for debug, create and save a bitmap file using the data and the given header
createBMPFile(pSrcBitmap, *pBitmapInfoHeader);   // this works
reateBMPFile(*ppbResult, *pBitmapInfoHeader);    // this doesn't work, error writing data

return S_OK;
}

Я прошу прощения за то, что не дал полностью полный минимальный функциональный пример — это часть плагина рендеринга для unidrv.

Задача должна быть довольно простой: скопировать PBYTE в другой PBYTE,
Я выделяю пространство, затем копирую.
Я проверяю, делая отладочный образ и сохраняя его на диск — оригинальный PBYTE создает хорошее изображение, скопированный создает файл, который невозможно открыть, и он слишком мал. (Кроме того, учитывая, что это плагин для печати — печать пуста).

    *ppbResult = (PBYTE)LocalAlloc(LPTR, biSizeImage * sizeof(BYTE));
CopyMemory((*ppbResult), (pSrcBitmap), biSizeImage * sizeof(BYTE));

Верны ли типы данных? В чем моя ошибка?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]