Делаю dll для подключения устройства через COM порт. Не могу понять в чем причина ошибки.
С вызовом функции из dll проблем нет. При отладке могу зайти в нее через F11 и смотреть ход выполнения, но при попытке открытия COM порта с CreateFile выпадает
Первый этап обработки исключения по адресу 0x00021478 в dll_check.exe: 0xC0000005: нарушение прав доступа при исполнении по адресу 0x00021478.
Необработанное исключение по адресу 0x00021478 в dll_check.exe: 0xC0000005: нарушение прав доступа при исполнении по адресу 0x00021478.
Кусок кода функции из dll.
extern "C" _declspec(dllexport) int connectAr(){
HANDLE hSerial;
LPCTSTR sPortName = L"COM3";
hSerial = ::CreateFile(sPortName, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
//ошибка выпадает при попытке вызова CreateFile
Вроде просмотрел книжки по winAPI, но там ничего похожего не описывается. У меня 2 варианта. Либо ошибка связана с указателями, но я не знаю, что здесь можно исправить, либо что-то с SECURITY_ATTRIBUTES.
Если я делаю не dll, а экзешник, то проблем с подключением нет. COM порт работает. То есть проблема еще может быть связана с вызовом winapi функции именно не напрямую, а из dll.
Вызов dll функции
HINSTANCE hDllInstance = LoadLibraryEx(L"mydll.ll", 0, DONT_RESOLVE_DLL_REFERENCES);
typedef int(*functionDll)();
functionDll fpFunction = (functionDll)GetProcAddress(hDllInstance, "connectAr");
int n = fpFunction();