]> sigrok.org Git - libserialport.git/commit
windows: Use correct variant of CreateFile.
authorMartin Ling <redacted>
Fri, 24 Jan 2020 04:00:13 +0000 (04:00 +0000)
committerMartin Ling <redacted>
Fri, 24 Jan 2020 05:39:16 +0000 (05:39 +0000)
commite47c7dcbffa04583d1e94d9c359784fc14a59d88
tree2b553ecd291538f38181af596c46e20bdf18d9c3
parent2149db9e932c7e45c5f9b68465d5750ad94230a3
windows: Use correct variant of CreateFile.

When built with MSVC and unicode enabled, using CreateFile gave:

warning C4133: 'function': incompatible types - from 'char *' to 'LPCWSTR'

CreateFile is a macro expanding to either CreateFileW if unicode
mode is enabled, or CreateFileA if not.

For CreateFileW, the filename is a UTF-16 string. For CreateFileA
it is an 'ANSI' string, meaning 8-bit chars in the current Windows
code page.

We do need to stick to 8-bit strings for port names, since
sp_get_port_by_name() and sp_get_port_name() are defined with
char * types, and that is what we store in struct sp_port. So
CreateFileA is the correct version to use.

Since Windows serial port names are always just 'COM' and a digit,
with a '\\.\' prefix for higher numbers, encoding is fortunately
not an issue - ASCII, UTF-8 and all the Windows code pages seem to
be equivalent for these characters.

We should however explicitly document what the encoding of strings
accepted and returned by libserialport is.
serialport.c
windows.c