WinAPI concat два НЕДЕЙСТВИТЕЛЬНЫХ буфера

do I need to manually do that ?
Does CopyMemory  accept shifting the destination ?
the following isn't working 
requestBuffer = VirtualAlloc(NULL, sizeof(fileBuffer) + sizeof(sendRequest) + 2, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
    CopyMemory(requestBuffer,sendRequest, sizeof(sendRequest)); 
    CopyMemory((PVOID)(requestBuffer+sizeof(requestBuffer)),fileBuffer, sizeof(fileBuffer));

последний CopyMemory дает синтаксическую ошибку Выражение должно быть указателем на полный тип объекта Я полагал, что вы не можете dereference пустота, но любая идея как к concat эти два буфера

0
добавлено отредактировано
Просмотры: 1
nl ja de
Пожалуйста, покажите фактическое сообщение об ошибке, которое вы получаете.
добавлено автор Greg Hewgill, источник
@GregHewgill хорошо
добавлено автор bit8bug, источник

1 ответы

Это походит requestBuffer является пустотой * . Вы не можете использовать адресную арифметику с указателями с пустота указатели. Попытайтесь бросить, чтобы (PBYTE) перед добавлением:

CopyMemory((PVOID)((PBYTE)requestBuffer+sizeof(requestBuffer)), ...
2
добавлено
@WhozCraig: You' ре совершенно верно, sizeof кажется неправильным. Возможно, it' s предполагаемый быть sizeof (fileBuffer) ? Трудно сказать. Как вы говорите, бросок, чтобы (PVOID) isn' t необходимый, но я оставил его там, чтобы поддержать связь с оригинальным кодом.
добавлено автор Greg Hewgill, источник
I' m уверенный с кастингом его проблемы "решен", но isn' t sizeof (requestBuffer) в этом случае размер недействительного указателя? то, что это было ассигнованным немедленно предшествующего и назначенного, к какой, кажется, указатель, так или иначе. Это заставляет меня задаться вопросом, обнаруживал ли OP когда-нибудь, что это должно быть длиной байта его посылать-запроса, не размером указателя (если I' m читающий это правильно). Наконец, заключительная PVOID брошена даже необходимая?
добавлено автор WhozCraig, источник
Я использовал не подпалившую случайную работу, но PBYTE - способ пойти, спасибо
добавлено автор bit8bug, источник
@WhozCraig да, я обнаружил sizeof() проблема, потому что это возвратилось 4:)
добавлено автор bit8bug, источник