Это вопрос, основанный на коде C для Win32.
В одной из моих функций у меня есть следующий код:
void SeparateStuff()
{
HGLOBAL hMem;
IStream* pStream;
Status result;
unsigned char* pBytes;
DWORD size;
FILE* fp;
if (hMem = GlobalAlloc(GMEM_MOVEABLE, 0))
{
if (CreateStreamOnHGlobal(hMem, FALSE, &pStream) == S_OK)
{
// save the buffer to a file
result = Scramble(pStream);
pStream->Release();
if (result == Ok)
{
if (pBytes = (unsigned char *) GlobalLock(hMem))
{
size = GlobalSize(hMem);
// pBytes has the buffer now
// in this case write it to a file
if(fp = fopen("c:\\SomeFile.bin", "wb"))
{
fwrite(pBytes, size, 1, fp);
fclose(fp);
}
}
}
}
else
{
printf("error CreateStreamOnHGlobal. Last err: %d\n", GetLastError());
return;
}
}
else
{
printf("error GlobalAlloc. Last err: %d\n", GetLastError());
return;
}
}
В этом случае буфер unsigned char * сохраняется в файл. Все отлично.
Теперь мне нужно изменить этот код, чтобы беззнаковый символ * возвращался. Что-то вроде:
void SeparateStuff(unsigned char* ReturnedBytes)
Где ReturnedBytes будет изменено внутри функции.
Я попытался скопировать указатель, я попытался скопировать данные внутри указателя. Я пробую много разных подходов. Неважно, что я делаю, я получаю мусор в вызывающей функции или исключение.
Вызывающая функция (например, main ()) должна передать SeparateStuff () также беззнаковый символ *.
Как мне это сделать?
спасибо!