I am using COM port in C ++. I cannot open COM ports with a higher number than 9, for example 10. This is the function used to detect the COM port:
WCHAR port_name[7]; WCHAR num_port[4]; for (i=1; i<256; i++) { bool bSuccess = false; wcscpy(port_name,L"COM"); wcscat(port_name,_itow(i,num_port,10)); HANDLE hPort; //Try to open the port hPort = CreateFile(L"COM10", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); //hPort = CreateFile(port_name, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); if (hPort == INVALID_HANDLE_VALUE) { DWORD dwError = GetLastError(); //Check to see if the error was because some other application had the port open if (dwError == ERROR_ACCESS_DENIED) { bSuccess = TRUE; j=j+1; } } else //The port was opened successfully { bSuccess = TRUE; j=j+1; CloseHandle(hPort); //closing the port } if (bSuccess)array_ports[j]=i; }
I cannot understand why, for example, COM10 throws FFFFFFFF back to the HANDLE hPort.
hPort = CreateFile(L"COM10", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
COM9, COM8, COM7, etc. works great
hPort = CreateFile(L"COM9", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
Is there a solution to this problem?