Я имею дело с функцией, которая имеет дело с USB-устройствами.
Но у меня уже есть проблема в чем-то простом:
Я получаю ошибку компилятора
A value of the type "LPVOID" can not be assigned to an entity of the type "PSP_DEVICE_INTERFACE_DETAIL_DATA" in the line
"DevIntfDetailData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSize);"
Может ли кто-нибудь сказать мне, что я здесь делаю не так?
Спасибо!
PSP_DEVICE_INTERFACE_DETAIL_DATA DevIntfDetailData;
DevIntfDetailData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSize);
Это должно работать:
DevIntfDetailData = reinterpret_cast<PSP_DEVICE_INTERFACE_DETAIL_DATA>(HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSize));
HealAlloc (как и все другие функции alloc) возвращает указатель на кучу памяти (void *), и C ++ не может разрешить устанавливать значение типа T * в значение типа void * без ручного приведения.
Существуют dynamic_cast, static_cast, reinterpret_cast и const_cast. Когда вы хотите преобразовать void * в любой указатель, вы должны использовать reinterpret_cast, потому что он конвертирует типы без какой-либо проверки (преобразование void * в любой T * не пройдет никакой проверки).