I/O完成端口 线程间通信机制
10.1打开和关闭设备
| 设备 | 用来打开设备的函数 |
|---|---|
| 目录 | CreateFile(pszName为路径名或UNC路径名),指定标志FILE_FLAG_BACKUP_SEMATICS标志 |
| 文件 | CreateFile(pszName为路径名或UNC路径名) |
| 逻辑磁盘驱动器 | CreateFile(pszName为"\\.\x:") |
| 物理磁盘驱动器 | CreateFile(pszName为"\\.\PHYSICALDRIVEx") |
| 串口 | CreateFile(pszName为"COMx") |
| 并口 | CreateFile(pszName为"LPTx") |
| 邮件槽服务器 | CreateMailslot(pszName为"\\.\mailslot\mailslotname") |
| 邮件槽客户端 | CreateFile(pszName为"\\servername\mailslot\mailslotname") |
| 命名管道服务器 | CreateNamePipe(pszName为"\\.\pipe\pipename") |
| 命名管道客户端 | CreateFile(pszName为"\\servername\mailslot\mailslotname") |
| 匿名管道 | CreatePipe用来打开服务器和客户端 |
| 套接字 | Socket, accept或acceptEx |
| 控制台 | CreateConsoleScreenBuffer或GetStdHandle |
以上每个函数返回一个标识设备的符号。
**SetCommConfig设置串口的波特率
BOOL SetCommConfig(
HANDLE hCommDev,
LPCOMMMCONFIG pCC,
DWORDD dwSize);
完成对设备的操作之后,就需要对设备进行关闭,大部分设备可以用CloseHandle来进行关闭,但是套接字必须调用closesocket。
BOOL CloseHandle(HANDLE hObject);
int closesocket(SOCKET s);
如果有一个设备句柄可以调用GetFileType来查出设备的类型:
DWORD GetFileType(HANDLE hDevice);
GetFileType函数的返回值
| 值 | 描述 |
|---|---|
| FILE_TYPE_UNKNOWN | 指定的文件类型为未知类型 |
| FILE_TYPE_DISK | 指定的文件是一个磁盘文件 |
| FILE_TYPE_CHAR | 指定的文件时一个字符文件,一般来说是一个并口设备或控制台 |
| FILE_TYPE_PIPE | 指定的文件是命名管道或匿名管道 |