• Chapter10“I/O设备的同步和异步”之I/O设备同步操作


    最常用的两个函数-WriteFile、ReadFile

    BOOL ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped);

    BOOL WriteFile( HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped);

    ReadFile函数是向hFile句柄对应的设备进行读操作,且hFile句柄被创建时需要 GENERIC_READ 访问权限。
    WriteFile函数是向hFile句柄对应的设备进行写操作,且hFile句柄被创建时需要 GENERIC_WRITE 访问权限。
    对于同步I/O操作来说,最后一个参数lpOverlapped都被指定为NULL。


    将数据刷新至设备

    在CreateFile函数中我们可以通过几个标识(Flags)来设定系统缓存数据的方式;不过对于串口(Serial Port)、管道(pipes),我们可以调用BOOL  FlushFileBuffers( HANDLE   hFile)函数来强制系统将缓存的数据写入到I/O设备中。


    同步I/O的取消操作

    同步I/O操作使用简单,但它有一个弊端就是它会阻塞该线程的其他操作直到I/O操作完成。对于一般负责任的程序来说,你应该尽量使用异步I/O操作。大部分程序被挂起的共同的原因就是等待同步I/O操作的完成。

    一个取消同步I/O操作的函数就是:BOOL  CancelSynchronousIo( HANDLE  hThread);其中hThread就是要取消其I/O操作的线程句柄,这个线程句柄在创建时需有THREAD_TERMINATE权限。

  • 相关阅读:
    git
    界面编程与视图(View)组件
    genymotion的安装
    210中断故障分析
    6410/210按键中断编程
    2440按键中断编程
    中断处理流程深度剖析
    scrapy 写文件进行debug调试
    scrapy 爬虫中间件-offsite和refer中间件
    scrapy文件管道
  • 原文地址:https://www.cnblogs.com/java20130722/p/3207129.html
Copyright © 2020-2023  润新知