HANDLE hCom = INVALID_HANDLE_VALUE;
hCom = CreateFileW(
L"COM1:",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
我正在尝试使用虚拟PC(Windows Embedded Compact)打开计算机的COM端口。 CreateFileW函数提供INVALID_HANDLE_VALUE。在win32上它完美无缺。
答案 0 :(得分:3)
检查HKLM \ Drivers \ Active下的端口名称。 您可以使用远程注册表编辑器执行此操作。 您将找到一个带有数字名称的键列表,但在每个子键中,您可以找到设备名称,如COM1 :(这是CE上的有效设备名称)。 通常BSP使用串行端口进行调试输出,这将阻止操作系统使用它。您可能需要通过将正确的参数传递给引导加载程序来禁用串行调试输出(LOADCEPC具有命令行开关,可以使用.ini文件配置biosloader),允许系统作为常规串行端口访问该端口。
答案 1 :(得分:0)
您应该使用GetLastError()
来检查错误代码。
对于打开gps com端口,我有这个代码(它既适用于wince版本也适用于桌面窗口):
if ( port > 9 )
sport.Format(_T("\\\\.\\COM%d"), port);
else
sport.Format(_T("COM%d:"), port);
HANDLE hFile = ::CreateFile(sport.GetString(),
GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);