зеркало из https://github.com/github/putty.git
Prepend \\.\ to configured serial line string, to allow easy access to ports
above COM9. [originally from svn r7345] [this svn revision also touched putty-wishlist]
This commit is contained in:
Родитель
01612d38e4
Коммит
a3ff37885d
|
@ -2976,9 +2976,7 @@ serial line you want PuTTY to talk to, if your computer has more
|
|||
than one serial port.
|
||||
|
||||
On Windows, the first serial line is called \i\cw{COM1}, and if there
|
||||
is a second it is called \cw{COM2}, and so on. A serial line with
|
||||
a name other than \cw{COM1} to \cw{COM9} can be specified by prefixing
|
||||
its name with \cw{\\\\.\\} - for instance, \cw{\\\\.\\COM10}.
|
||||
is a second it is called \cw{COM2}, and so on.
|
||||
|
||||
This configuration setting is also visible on the Session panel,
|
||||
where it replaces the \q{Host Name} box (see \k{config-hostname}) if
|
||||
|
|
|
@ -221,8 +221,39 @@ static const char *serial_init(void *frontend_handle, void **backend_handle,
|
|||
logevent(serial->frontend, msg);
|
||||
}
|
||||
|
||||
serport = CreateFile(cfg->serline, GENERIC_READ | GENERIC_WRITE, 0, NULL,
|
||||
OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
|
||||
{
|
||||
/*
|
||||
* Munge the string supplied by the user into a Windows filename.
|
||||
*
|
||||
* Windows supports opening a few "legacy" devices (including
|
||||
* COM1-9) by specifying their names verbatim as a filename to
|
||||
* open. (Thus, no files can ever have these names. See
|
||||
* <http://msdn2.microsoft.com/en-us/library/aa365247.aspx>
|
||||
* ("Naming a File") for the complete list of reserved names.)
|
||||
*
|
||||
* However, this doesn't let you get at devices COM10 and above.
|
||||
* For that, you need to specify a filename like "\\.\COM10".
|
||||
* This is also necessary for special serial and serial-like
|
||||
* devices such as \\.\WCEUSBSH001. It also works for the "legacy"
|
||||
* names, so you can do \\.\COM1 (verified as far back as Win95).
|
||||
* See <http://msdn2.microsoft.com/en-us/library/aa363858.aspx>
|
||||
* (CreateFile() docs).
|
||||
*
|
||||
* So, we believe that prepending "\\.\" should always be the
|
||||
* Right Thing. However, just in case someone finds something to
|
||||
* talk to that doesn't exist under there, if the serial line
|
||||
* contains a backslash, we use it verbatim. (This also lets
|
||||
* existing configurations using \\.\ continue working.)
|
||||
*/
|
||||
char *serfilename =
|
||||
dupprintf("%s%s",
|
||||
strchr(cfg->serline, '\\') ? "" : "\\\\.\\",
|
||||
cfg->serline);
|
||||
serport = CreateFile(serfilename, GENERIC_READ | GENERIC_WRITE, 0, NULL,
|
||||
OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
|
||||
sfree(serfilename);
|
||||
}
|
||||
|
||||
if (serport == INVALID_HANDLE_VALUE)
|
||||
return "Unable to open serial port";
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче