Лучшая практика отправки массива из нативного кода в управляемый код (C ++ / CLI)? - PullRequest
2 голосов
/ 28 сентября 2010

Я пишу Win32 DLL для чтения / записи USB HID устройства. Данные для обмена - это 64-байтовые массивы без знака. Клиентская программа написана на C ++ / CLI.

Для достижения максимальной скорости и минимальных издержек мне нужен эффективный способ отправки массива управляемому клиенту.

Есть два варианта, о которых я могу подумать прямо сейчас:

  1. Собственный: используйте PostMessage и отправьте указатель на массив.
    Управляемый: в WndProc Marshal.Copy указатель на новый управляемый массив байтов, затем удалите указатель.

  2. Собственный: использовать указатель функции в качестве обратного вызова для обработки данных.
    Управляется: используйте Marshal.GetFunctionPointerForDelegate для передачи указателя функции в собственный мир.

Спасибо.

1 Ответ

2 голосов
/ 28 сентября 2010

Я бы сказал, что выбор причудливых способов сортировки является преждевременной оптимизацией. Используйте самый простой способ упорядочить данные и попробуйте оценить другие методы, если они не работают удовлетворительно. За исключением каких-либо архитектурных потребностей в обратных вызовах или отправке сообщений, почему бы просто не передать массив функции?

...