windows编程
文章平均质量分 79
codinglf
专注于视频直播行业,在这个行业基类了丰富的经验,热爱开源项目。
我坚信业精于勤,只有偏执狂才能真正的成功。
喜爱的开源项目有:ffmpeg、opencv、crtmpserver、obs-studio、nginx、redis、skynet、kbengine、protobuf等等。。。
我的博客:http://blog.csdn.net/windows_nt
展开
-
windows核心编程-获取系统中进程的信息
通过CreateToolhelp32Snapshot函数可以获取系统中进程的详细信息,先看看函数的说明吧CreateToolhelp32Snapshot函数通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程[THREAD]建立一个快照[snapshot]。HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFla原创 2013-05-18 10:15:46 · 7414 阅读 · 0 评论 -
win32多线程-I/O完成端口
/* * EchoSrv.c * * Sample code for Multithreading Applications in Win32 * This is from Chapter 6, Listing 6-4 * * Demonstrates how to use I/O completion ports * with TCP on the Internet. This原创 2013-08-04 21:17:44 · 1928 阅读 · 0 评论 -
win32多线程-在MFC程序中使用多线程
1、基础知识介绍 使用mfc的道友,应该很清楚,在mfc程序中创建多线程时,应该调用mfc中为我们设计好的线程接口函数AfxBeginThread(),原因是这个接口为我们做好了mfc函数和数据的初始化工作,如果你的mfc多线程中不使用任何mfc函数或数据,你也可以不用此函数来创建多线程。好了,进入正题,我来介绍一下用AfxBeginThread()创建worker线程和UI线程的两种调原创 2013-08-04 23:55:15 · 5167 阅读 · 0 评论 -
Windows核心编程-----线程池
线程池(thread pool),允许有多个线程同时存在,并发执行,并且这些线程受到统一管理。 在Windows Vista中,提供了全新的线程池机制,一般这些线程池中的线程的创建的销毁是由操作系统自动完成的。 Windows Vista 中重新设计了线程池,提供了一组新的线程池API。因此,本篇讨论的仅仅在Windows Vista系统,或其以上的Windows版转载 2013-09-29 18:42:46 · 1374 阅读 · 0 评论 -
Windows核心编程-----线程池二
以异步方式调用函数为了用线程池来以异步的方式执行一个函数,我们需要定义一个具有以下原型的函数:VOID CALLBACK SimpleCallback( [in, out] PTP_CALLBACK_INSTANCE Instance, [in, out, optional] PVOID Context);然后为了让线程池中的一个转载 2013-09-29 18:44:07 · 1056 阅读 · 0 评论 -
计时器的使用
//Windows系统下time(),clock(),timeGetTime(),GetTickCount(),QueryPerformanceCounter()来计时#include #include #include //time_t time() clock_t clock() #include //ti原创 2013-10-10 16:33:06 · 1056 阅读 · 0 评论 -
windows消息机制
摘要:Windows编程和Dos编程,一个很大的区别就是,Windows编程是事件驱动,消息传递的。所以,要学好Windows编程,必须对消息机制有一个清楚的认识,本文希望能够对消息的传递做一个全面的分析。 什么是消息? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发转载 2013-12-04 18:28:47 · 954 阅读 · 0 评论 -
PostThreadMessage实现多线程间消息通信
PostThreadMessage的原型是这样的BOOL PostThreadMessage( DWORD idThread, UINT Msg, WPARAM wParam, LPARAM lParam);PostThreadMessage可以用于线程之间的异步通讯,因为它不用等待调用者返回,这也许是线程通讯中最简单的一种方法了。但是转载 2013-12-04 18:55:48 · 2522 阅读 · 0 评论 -
文本转语音
TTS引擎,基于文本驱动的语音发声,核心的应用程序接口是ISpVoice在有些精简的操作系统下,可能TTS组件无法正常使用,下载http://download.csdn.net/detail/windows_nt/6961609win7 tts修复文件.zip,解压安装即可。#include#include#pragma comment(lib,"sapi.lib");原创 2014-02-25 22:27:16 · 2523 阅读 · 0 评论 -
windows实时监测热插拔设备的变化
序: 在21世纪,这个信息时代,热插拔设备是一个巨大的安全隐患。在这个篇文章中,我将介绍一种在用户模式下检测即插即用设备的方法。比如,在系统中插入一个usb设备,ipod,无线网卡等等,都可以在用户模式下检测到,并决定开启或关闭新插入的设备。并且,在文章结尾,我将介绍一下这种方法的优点,以及限制。 怎样检测硬件改变呢? 事实上,windows操作系统在检测到硬件变化时翻译 2013-10-30 00:22:20 · 16550 阅读 · 0 评论 -
android自动安装驱动
研究方向及实现思路:在android设备通过USB插入到PC机的时候,必然会在注册表留下一些设备信息。通过这些设备信息应该可以找到pid、vid和产品序列号。通过他们基本就可以识别出是android设备。通过vid可以找出生产厂商。pid可以找出对应的产品。根据他俩就可以在驱动库中找到驱动文件然后下载、安装。安装完驱动应该就可以通过adb来进行和手机通信了。 目前得出的结论转载 2013-10-29 12:17:19 · 1173 阅读 · 0 评论 -
希捷硬盘读取固件区数据
首先,想读取希捷硬盘的固件区数据,用普通的方法CreateFile打开硬盘,然后Seek,ReadFile等是不行的,这样读取出来的只是硬盘的用户区数据。想要读取硬盘的固件区(系统区)数据,需要一些额外的配置。硬件:1、电源。2、usb转com口数据线。3、一块希捷硬盘。操作:用usb转串口数据线连接硬盘,给硬盘加电,操作完成。 需要在PC上通过串口通信的方式,给希原创 2013-11-13 23:35:13 · 5355 阅读 · 0 评论 -
SOURCES的文件格式
SOURCES的文件格式:TARGETNAME=drivername ,-本参数用于指定生成的设备驱动程序名称(不需后缀名),所产生的文件-为drivername.sys.TARGETPATH=.\lib-本参数用于指定生成的设备驱动程序所存放的路径.一般采用.\lib.TARGETTYPE=DRIVER-build能够生成许多不同的目标对象原创 2013-10-15 08:39:13 · 2752 阅读 · 0 评论 -
HID
1、头文件包含,库文件链接在VC中开发HID应用程序时,需要包含setupapi.h和hidsdi.h,包含方式必须为extern "C",如下所示:extern "C" {// Declare the C libraries used#include "setupapi.h" // Must link in setupapi.lib#include "hidsdi.h"转载 2013-09-01 19:19:10 · 3860 阅读 · 0 评论 -
win32多线程-新版本MtVerify.h
api调用错误诊断宏,对GetLastError()函数的封装,并解析错误/* * MtVerify.h * * Error handling for applications in * "Multitheading Applications in Win32" * * The function PrintError() is marked as __inline so that原创 2013-07-23 23:16:10 · 2532 阅读 · 0 评论 -
win32多线程-异步(asynchronous) I/O
I/O设备是个慢速设备,无论打印机、调制解调器,甚至硬盘,与CPU相比都奇慢无比,坐下来干等I/O的完成是一件不甚明智事情。 异步(asynchronous) I/O在win32多线程程序设计中被称为overlapped I/O,是win32的一项技术,你可以要求操作系统为你传送数据,并且在传送完毕时通知你。这项技术使你的程序在I/O进行过程中仍然能够继续处理事务。事实上,操作系原创 2013-07-28 20:04:34 · 4220 阅读 · 0 评论 -
windows核心编程-作业
windows核心编程学习-作业 Windows提供了一个作业(job)内核对象,它允许我们将进城组合在一起并创建一个“沙箱”来限制进城能够做什么。最好将作业对象想象成一个进程容器。但是创建只包含一个进程的作业同样非常有用,因为这样可以对进程施加平时不能施加的限制。 验证当前进程是否在一个现有的作业控制之下: BOOL IsProcessInJob( H原创 2013-05-19 10:59:09 · 2404 阅读 · 0 评论 -
windows核心编程-查看系统中的错误代码的含义
最近正在学习windows核心编程,书中的事例代码原先一直无法在vc6.0运行,经过几天的调试终于可以编译过了。无法编译的原因主要有以下几点:1、vc6.0自带的SDK版本太低。2、vc6.0环境目录中未包括sal.h库文件的目录3、未安装vs6sp5告诉大家一个超省事超简单的办法:就是直接用vs2010等版本直接打开下边的事例程序,即可编译。因为编译器中已配置好了SDK库,v原创 2013-05-14 23:47:39 · 3643 阅读 · 0 评论 -
window核心编程-内核对象线程同步
window核心编程-内核对象线程同步1、内核对象线程同步介绍上一章讲了关键字(临界区)线程同步,使用关键字线程同步,我们很容易陷入死锁的情形,这是因为我们无法为进入关键段指定一个最长等待时间。本章将讨论如何使用内核对象来对线程同步。我们也将看到,与用户模式下的同步机制(关键段同步)相比,内核对象的用途要广泛的多。实际上,内核对象唯一的缺点就是它们的性能。内核对象包括进程、线程以及原创 2013-06-04 00:26:15 · 3441 阅读 · 0 评论 -
Windows核心编程-新旧API速查表
下面是一些线程池的API,分别是适用于vista和以前的OS版本。FeatureOriginal API(XP)Current APISynchRegisterWaitForSingleObjectUnregisterWaitExCloseThreadpoolWait转载 2013-06-18 23:30:32 · 1281 阅读 · 0 评论 -
windows核心编程-虚拟内存
Microsoft Windows 提供了三种机制来对内存进行操作。1、堆-----------最适合用来管理大量的小型对象。2、虚拟内存-----最适合用来管理大型对象数组或大型结构数组。3、内存映射文件-最适合用来管理大型数据流(通常是文件),以及在同一机器上运行的多个进程之间共享数据。接下来我来介绍一下虚拟内存中用到的几个函数。LPVOID VirtualAl原创 2013-07-09 23:06:40 · 1454 阅读 · 0 评论 -
Windows核心编程-多个应用程序实例间共享数据
多个应用程序实例间共享数据Windows在一个Win32程序的地址空间周围筑了一道墙。通常,一个程序的地址空间中的数据是私有的,对别的程序而言是不可见的。但是在一个应用程序的多个实例间共享数据还是有简单的方法的。当您在一个应用程序实例中修改数据,这种改变将立即反映在其他的应用程序实例中。正常的应用程序其数据和代码段都是在独立的段中,启动多个程序时,静态变量等数据都是独立的,不能用来在多原创 2013-07-11 19:34:17 · 3551 阅读 · 0 评论 -
windows核心编程-内存映射文件(一)
windows核心编程-内存映射文件序Microsoft Windows 提供了三种机制来对内存进行操作。1、堆-----------最适合用来管理大量的小型对象。2、虚拟内存-----最适合用来管理大型对象数组或大型结构数组。3、内存映射文件-最适合用来管理大型数据流(通常是文件),以及在同一机器上运行的多个进程之间共享数据。接下来我给大家介绍一下内存映射文件的相关知识。原创 2013-07-12 00:01:20 · 6576 阅读 · 0 评论 -
windows核心编程-内存映射文件(二)
/************************************************************************//* 用内存映射来实现进程间数据通信 *//* 转载请注明文章来自:http://blog.csdn.net/windows_nt *//************************原创 2013-07-12 09:34:14 · 1675 阅读 · 0 评论 -
win32多线程-异步过程调用(asynchronous Procedure Calls, APCs)
使用overlapped I/O并搭配event对象-----win32多线程-异步(asynchronous) I/O事例,会产生两个基础性问题。第一个问题是,使用WaitForMultipleObjects(),你只能等待最多达MAXIMUM_WAIT_OBJECTS个对象,在Windows NT中此值最大为64。第二个问题是,你必须不断根据“那一个handle被激发”而计算如何反应。原创 2013-07-29 22:51:34 · 1928 阅读 · 0 评论 -
win32多线程-重写消息循环
最近正在学习《win32多线程程序设计》,这是其中一段重写消息循环的代码事例,以后可能用的上。 while (!quit || gNumPrinting > 0) { // Wait for next message or object being signaled DWORD dwWake; dwWake = MsgWaitForMultip原创 2013-07-23 07:07:10 · 2653 阅读 · 0 评论 -
windows核心编程-关键段(临界区)线程同步
windows核心编程-关键段(临界区)线程同步线程同步的方式主要有:临界区、互斥区、事件、信号量四种方式。接下来我主要讲一下自己在学习windows核心编程中对于临界区线程同步方式的使用。临界区线程同步在windows核心编程中被称为关键段线程同步,以下统称关键段关键段是一小段代码,它在执行之前需要独占对一些资源的访问权。缺点:能且只能用在一个进程中的多线程同步。可能陷入死锁原创 2013-05-20 23:54:09 · 9609 阅读 · 0 评论 -
windows核心编程-互斥器(Mutexes)
线程同步的方式主要有:临界区、互斥区、事件、信号量四种方式。前边讲过了临界区线程同步-----windows核心编程-关键段(临界区)线程同步,这章我来介绍一下互斥器(Mutexes)在线程同步中的使用。互斥器(Mutexes)的用途和临界区(critical section)的用途非常相似,如:一个时间内只能够有一个线程拥有mutex,就好像同一时间内只能够有一个线程进入同一个criti原创 2013-07-24 00:04:05 · 6061 阅读 · 1 评论 -
windows核心编程-信号量(semaphore)
线程同步的方式主要有:临界区、互斥区、事件、信号量四种方式。前边讲过了互斥器线程同步-----windows核心编程-互斥器(Mutexes),这章我来介绍一下信号量(semaphore)线程同步。理论上说,mutex是semaphore的一种退化。如果你产生一个semaphore并令最大值为1,那就是一个mutex。也因此,mutex又常被称为binary semaphore。如果某个线原创 2013-07-24 22:48:19 · 19614 阅读 · 0 评论 -
使用vspd虚拟com,打开失败
使用vsdp虚拟的com软件,可以模拟com接口,但程序调试时发现,使用CreateFile()打开虚拟的COM时总是失败,使用一些超级终端类软件,亦是如此。后来在设备管理器中查看后,vsdp确实是在驱动层模拟了com接口,但为什么失败呢?Win32 API函数CreateFile()除了可打开普通文件外,还可以打开设备,比如可用于打开串口,获得串口句柄。使用CreateFile()函原创 2013-11-10 22:28:54 · 7819 阅读 · 0 评论