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 | 指定的文件是命名管道或匿名管道 |