Когда я пытаюсь сделать то же самое на C++, оно не работает.
Я сделал два снимка Wireshark, на которых четко видны различия.
Это скриншот хорошей ситуации:

Это скриншот плохой ситуации:

Вы можете ясно видеть два байта cccc, добавленные к данные C++.
Для вашей информации: в приложении C# я использую следующий исходный код для преобразования массива байтов в объект для отправки:
Код: Выделить всё
byte[] requestCounters = new byte[] { 0xFF, 0xFF };
dataCounters = (object) requestCounters;
Код: Выделить всё
BYTE bData_Counters[] = {0xFF, 0xFF};
_variant_t data_Counters = from_ByteArray(bData_Counters); // new byte[] { 0xFF, 0xFF };
Код: Выделить всё
_variant_t from_ByteArray(BYTE input[])
{
long dataCount = sizeof(input) / sizeof(BYTE);
// Create a SAFEARRAY to hold the bytes
SAFEARRAYBOUND sabound;
sabound.lLbound = 0;
sabound.cElements = dataCount;
SAFEARRAY* psa = SafeArrayCreate(VT_UI1, 1, &sabound); // VT_UI1 = unsigned byte
// Copy the bytes into the SAFEARRAY
void* pArrayData = nullptr;
SafeArrayAccessData(psa, &pArrayData);
memcpy(pArrayData, input, dataCount);
SafeArrayUnaccessData(psa);
// Wrap the SAFEARRAY in a VARIANT (via _variant_t)
_variant_t data;
data.vt = VT_ARRAY | VT_UI1;
data.parray = psa;
return data;
}
Есть ли у кого-нибудь идеи?
Подробнее здесь: https://stackoverflow.com/questions/798 ... safearrays
Мобильная версия