我們已經有了一些舊的串行代碼,通過打開它然後關閉它來檢查串行端口是否可用。現在我們通過提供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