浅墨浓香

想要天亮进城,就得天黑赶路。

导航

2015年8月28日

摘要: 10.5 接收I/O请求完成的通知(1)I/O请求被加入设备驱动程序的队列,当请求完成以后,设备驱动也要负责通知我们I/O请求己经完成。(2)可以用4种方法来接收I/O请求己经完成的通知技术特点触发设备内核对象①允许一个线程发出I/O请求,另一个线程对结果进行处理。②当向一个设备同时发出多个I/O请... 阅读全文

posted @ 2015-08-28 10:56 浅墨浓香 阅读(1979) 评论(0) 推荐(0) 编辑

2015年8月27日

摘要: 10.3 执行同步设备I/O(1)对设备读写操作的函数 ①ReadFile/WriteFile函数参数描述hFile文件句柄pvBuffer指向要接收文件数据的缓冲区或把缓冲区数据写入设备nNumbytesToRead要读取的字节数或写入的字节数pdwNumBytes实际读取的字节数或写入的字节数... 阅读全文

posted @ 2015-08-27 21:09 浅墨浓香 阅读(704) 评论(0) 推荐(0) 编辑

2015年8月26日

摘要: 10.1 打开和关闭设备10.1.1 设备的定义——在Windows中可以与之进行通信的任何东西。(1)常见设备及用途设备用途用来打开设备的函数文件永久存储任何数据CreateFile(pszName为路径名或UNC路径名)目录属性和文件压缩的设置同上,如果指定FILE_FLAG_BACKUP_SE... 阅读全文

posted @ 2015-08-26 23:33 浅墨浓香 阅读(1240) 评论(0) 推荐(0) 编辑

2015年8月21日

摘要: 9.7 线程同步对象速查表 对象 何时处于未触发状态 何时处于触发状态 成功等待的副作用 进程 进程仍在运行的时候 进程终止的时(ExitProcess、TerminateProcess) 没有 线程 线程仍在运行的时候 线程终止的时候(ExitThread、TermimateThread) 没有 阅读全文

posted @ 2015-08-21 10:51 浅墨浓香 阅读(1302) 评论(0) 推荐(1) 编辑

2015年8月19日

摘要: 9.5 信号量内核对象(Semaphore)(1)信号量的组成 ①计数器:该内核对象被使用的次数 ②最大资源数量:标识信号量可以控制的最大资源数量(带符号的32位) ③当前资源数量:标识当前可用资源的数量(带符号的32位)。即表示当前开放资源的个数(注意不是剩下资源的个数),只有开放的资源才能... 阅读全文

posted @ 2015-08-19 14:36 浅墨浓香 阅读(700) 评论(0) 推荐(0) 编辑

2015年8月18日

摘要: 9.4 可等待的计时器内核对象——某个指定的时间或每隔一段时间触发一次(1)创建可等待计时器:CreateWaitableTimer(使用时应把常量_WIN32_WINNT定义为0x0400)参数描述psa安全属性(如使用计数、句柄继承等)bManualReset手动重置计时器还是自动重置计时器。①... 阅读全文

posted @ 2015-08-18 16:33 浅墨浓香 阅读(858) 评论(0) 推荐(0) 编辑

摘要: 9.1 等待函数(1)WaitForSingleObject(hObject,dwMilliseonds); ①dwMilliseconds为INFINITE时表示无限等待 ②dwMilliseconds=0时表示立即返回,即使它要等待的条件还没满足 ③dwMilliseconds为其它值时(... 阅读全文

posted @ 2015-08-18 09:28 浅墨浓香 阅读(718) 评论(0) 推荐(0) 编辑

2015年8月15日

摘要: 8.6 条件变量(Condition Variables)——可利用临界区或SRWLock锁来实现 8.6.1 条件变量的使用 (1)条件变量机制就是为了简化 “生产者-消费者”问题而设计的一种线程同步机制。其目的让线程以原子方式释放锁并将自己阻塞,直到某一个条件成立为止。如读者线程当没有数据可读取 阅读全文

posted @ 2015-08-15 22:20 浅墨浓香 阅读(2570) 评论(0) 推荐(0) 编辑

2015年8月13日

摘要: 8.5 Slim读/写锁(SRWLock)——轻量级的读写锁(1)SRWLock锁的目的 ①允许读者线程同一时刻访问共享资源(因为不存在破坏数据的风险) ②写者线程应独占资源的访问权,任何其他线程(含写入的线程)要等这个写者线程访问完才能获得资源。(2)SRWlock锁的使用方法 ①初始化... 阅读全文

posted @ 2015-08-13 16:41 浅墨浓香 阅读(915) 评论(0) 推荐(1) 编辑

摘要: 8.4 关键段(临界区)——内部也是使用Interlocked函数来实现的!8.4.1 关键段的细节(1)CRITICAL_SECTION的使用方法 ①CRITICAL_SECTION cs; //声明为全局变量(也可是成员变量,甚至局部变量) ②InitializeCriticalSectio... 阅读全文

posted @ 2015-08-13 14:06 浅墨浓香 阅读(687) 评论(1) 推荐(1) 编辑

2015年8月10日

摘要: 8.1 原子访问:Interlocked系列函数(Interlock英文为互锁的意思)(1)原子访问的原理 ①原子访问:指的是一线程在访问某个资源的同时,能够保证没有其他线程会在同一时刻访问该资源。 ②从汇编的角度看,哪怕很简单的一条高级语言都可以被编译成多条的机器指令。在多线程环境下,这条语句... 阅读全文

posted @ 2015-08-10 23:15 浅墨浓香 阅读(3899) 评论(0) 推荐(3) 编辑

2015年8月9日

摘要: 23.4 WinInet和FTP(1)WinInet接口(含HTTP、FTP)及FTP函数层次关系(2)Ftp函数介绍 ①InternetOpen——初始化,它告诉 Internet DLL 初始化内部数据结构并准备接收应用程序之后的其他调用。参数含义LPCTSTR lpszAgent调用WinI... 阅读全文

posted @ 2015-08-09 16:17 浅墨浓香 阅读(546) 评论(0) 推荐(0) 编辑

摘要: 23.3.2以非阻塞方式工作的TCP聊天室客户端(1)WSAAsyncSelect函数——设置非阻塞模式参数含义SOCKET s套接字句柄HWND hWnd套接字的通知消息将被发往的hwnd的窗口过程unsigned int wMsg自定义通知消息的编号,如#define WM_SOCKET WM_... 阅读全文

posted @ 2015-08-09 16:15 浅墨浓香 阅读(476) 评论(0) 推荐(0) 编辑

摘要: 23.3 TCP应用程序设计23.3.1 通信协议的工作线程的设计——阻塞模式(1)设计TCP链路的通信协议 ①数据包的设计:数据包头和数据包体(可参考代码中的消息定义部分)——TLV(Type-Length-Value)组成说明数据包头包含命令代码字段和整个数据包大小的字段(这个字段长度是固定的... 阅读全文

posted @ 2015-08-09 15:59 浅墨浓香 阅读(449) 评论(0) 推荐(0) 编辑

摘要: 23.1 Windows Socket接口简介 (1)TCP/IP模型 ①TCP/IP的核心协议运行于传输层和Internet层,主要包括TCP、UDP和IP协议,而TCP协议和UDP协议是以IP协议为基础而封装的。这两种协议提供了不同方式的数据通信服务。 ②IP协议比喻为道路,则下一层的网络访问层 阅读全文

posted @ 2015-08-09 15:39 浅墨浓香 阅读(529) 评论(0) 推荐(0) 编辑

摘要: 22.2.7 波形音频文件格式——WAV音频格式偏移量字节数据00004字符串——“RIFF”(资源交换文件格式),文件由很多数据“块”组成,每一块数据由块的名称和块长组成。名称由4个ASCII字符组成。块长不包含块的名称和块长这个字段本身所需的8个字节,也就是说是“块”的实际长度。00044波形数... 阅读全文

posted @ 2015-08-09 15:33 浅墨浓香 阅读(405) 评论(0) 推荐(0) 编辑

摘要: 22.2.4 数字录音机——WaveInXXX波形输入设备函数的使用(1)录音常用的API ①waveInOpen(打开一个音频输入设备) ②waveInPrepareHeader(为一个即将在waveInAddBuffer中调用的输入缓冲区准备头部) ③waveInAddBuffer(添加一... 阅读全文

posted @ 2015-08-09 15:23 浅墨浓香 阅读(587) 评论(0) 推荐(0) 编辑

摘要: 22.1 Windows和多媒体22.1.1 Windows中支持多媒体功能的API(1)底层接口:如波形音频输入、输出函数waveIn和waveOut前缀开头 MIDI输出设备midiOut函数(2)高层接口: ①以mci为前缀的7个函数。mci本身有两种,一种是向MCI发送消息。一种是向MCI... 阅读全文

posted @ 2015-08-09 15:09 浅墨浓香 阅读(553) 评论(0) 推荐(0) 编辑

摘要: 21.5 Windows钩子21.5.1 Windows钩子钩子是Windows消息处理机制中的一个监视点,应用程序可以在这里安装一个监视子程序,这样就可以在系统中的消息流到达目的窗口过程前监控它们。也就是说,钩子是用来截获系统中的消息流,并送给其他应用程序的处理的。21.5.2 钩子的类型(1)按... 阅读全文

posted @ 2015-08-09 14:54 浅墨浓香 阅读(690) 评论(0) 推荐(0) 编辑

摘要: 21.1 关于库的基础知识(1)两种LIB库——都是链接时才用,链接完就不再使用了。属开发期的产物。LIB库区别对象库(也叫静态链接库)①是多个obj文件能过Lib.exe组合成一个.lib文件。包含了实际执行代码、符号表等。链接时被加到exe文件中。②只需要使用#pragma comment(li... 阅读全文

posted @ 2015-08-09 14:34 浅墨浓香 阅读(721) 评论(0) 推荐(0) 编辑