我们已经有了一些旧的串行代码,通过打开它然后关闭它来检查串行端口是否可用。现在我们通过提供ip地址作为字符串来为应用重新添加网络支持。使用CreateFile打开一个套接字
/**
* So far I have tried:
* A passed in portPath normally looks like:
\\?\acpi#pnp0501#1#1#{GUID}
10.2.0.155:2001
//10.2.0.155:2001/
\\.\10.2.0.155:2001\
\\?\10.2.0.155:2001\
* all without success.
*/
bool PortIsAvailable(const CString& portPath)
{
HANDLE hCom = ::CreateFile(portPath,
GENERIC_READ | GENERIC_WRITE,
0, // comm devices must be opened with exclusive-access
NULL, // no security attributes
OPEN_EXISTING, // comm devices must use OPEN_EXISTING
FILE_FLAG_OVERLAPPED, // not overlapped I/O
NULL); // hTemplate must be NULL for comm devices
if (INVALID_HANDLE_VALUE != hCom)
{
::CloseHandle(hCom);
return true;
}
return false;
}
我知道我可以使用连接,然后关机,但我想用最少的更改重用该功能。如果我能够更好地重用这个功能。如果没有,那么我将不得不编写代码来确定它是否是套接字。
我想知道通过CreateFile打开套接字的正确方法是什么?
我知道你可以使用ReadFile和WriteFile,但我想你也可以使用CreateFile。看来我将不得不编写所有额外的样板代码来解决系统围绕串行端口构建的问题:-( – 2009-02-06 06:21:40