
c/c++
ah_kin
这个作者很懒,什么都没留下…
展开
-
信号量机制在WINDOWS编程中的实际应用
同步问题就是因为线程/进程 间异步执行访问共享数据而引起的数据冲突的问题(经典的例子:生产者与消费者问题),windows提供了一些同步对象来解决此类问题,包括:临界区对象、互斥体对象、事件对象、信号量对象,下面将对这些同步对象进行说明举例。Win32 API提供了一组能使线程阻塞其自身执行的等待函数。这些函数在其参数中的一个或多个同步对象产生了信号,或者超过规定的等待时间才会返回。在转载 2013-10-31 10:54:05 · 943 阅读 · 0 评论 -
INF安装信息文件①
㈠、INF文件是什么 .INF 是 Device Information File (设备信息文件)的缩写,是微软公司为供硬件设备制造商发布其设备驱动程序而发展的———许多硬件设备的驱动程序都是使用.INF 文件来安装的。 .INF 文件从 Windows3.X 时代就开始大量被使用了。(说明:绿色部分可以忽略,仅做说明。蓝色部分为重点突出,文中要点,红色部分为特别注意,看仔细转载 2013-09-27 15:23:29 · 2400 阅读 · 0 评论 -
Windows下INF驱动安装文件内容分析
分类: LINUX下面先贴出了一个inf文件的内容,然后进行逐句分析:; Installation inf for the Intel 82930 USB Bulk IO Test Board;; (c) Copyright 1999 Microsoft;[Version]Signature="$CHICAGO$"Class=USBClassGUID转载 2013-09-27 17:16:46 · 1791 阅读 · 0 评论 -
INF安装信息文件7
INF Editor(安装信息文件编辑器) 1.0 (相关下载) INF-Tool V6.3d英文版 (相关下载) 作为一个电脑爱好者,当你把程序设计完成后,下一步接着就是要为它撰写一个安装程序。可就在这一步,不少人都曾有过这样的苦恼:一个原来仅仅数百KB的小程序,写好安装程序后竟然变成一、两MB,平白无故长“胖”不少。不过,现在大家不用心烦了,让“快速的INF安装转载 2013-09-27 15:30:20 · 1028 阅读 · 0 评论 -
INF安装信息文件⑥
INF高级应用实例 利用INF文件,我们可以完成很多意想不到的操作,这里通过几个实例进行说明: 实例一:完全删除驱动程序 很多情况下,当我们将不需要的硬件设备从系统拔出或取消连接后,其驱动程序并未从系统中真正删除,系统中仍然保留了这些设备的驱动程序文件和信息,时间一长,不仅会导致系统越来越庞大,而且这些顽固的驱动程序可能会影响新设备的安装,因为Windows会自动转载 2013-09-27 15:28:18 · 2470 阅读 · 0 评论 -
SHELLEXECUTEINFO 和 ShellExecuteEx的使用
使用SHELLEXECUTEINFO和ShellExecuteEx,我也主要是在cab包的安装时使用的。基本上是这样使用的,如下: SHELLEXECUTEINFO ShellInfo; memset(&ShellInfo, 0, sizeof(ShellInfo)); ShellInfo.cbSize转载 2013-09-27 14:46:42 · 811 阅读 · 0 评论 -
DeviceIoControl的使用说明
文章来自:http://hi.baidu.com/dylan_li/item/90b061dcb3d9a1df251f4097 应用程序和驱动程序的通信过程是:应用程序使用CreateFile函数打开设备,然后用DeviceIoControl与驱动程序进行通信,包括读和写两种操作。还可以用ReadFile读数据用WriteFile写数据。操作完毕时用CloseHandle关闭转载 2013-09-26 10:05:52 · 1010 阅读 · 0 评论 -
结构体最后的长度为0或1数组的作用
结构体最后的长度为0或1数组的作用2012-06-15 17:23:23 我来说两句 收藏 我要投稿 其实很早在看LINUX下就看到这个东西,后来在MFC内存池里同样也看到了类似的东西,还依照MFC写过一个类似的小内存池,(MFC用的是return this + 1)后来在李先静的《系统程序员成长计划》里看到了类似的定义,于是心里想着总结一下,结果发转载 2013-09-24 12:45:22 · 842 阅读 · 0 评论 -
获取usb序列号
// USB.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"/*************************************************************Win32控制台应用程序编译环境:Visual Studio 2005 主要功能:1). 读取U盘序列号,保存在USBSerial数组里。2翻译 2013-09-25 00:47:48 · 5749 阅读 · 0 评论 -
INF安装信息文件③
以下各行条目为可选内容: 在示例01中,Class=Image,这一行的语法为:Class=Unknown,系统定义用户指定的类名。(有关信息,参考下面的设备管理器支持的硬件类型) 在示例01中,Provider=%SoftMfg%,这一行的语法为:Provider=%提供商名称%,提供商。 在示例01中,DriverVer=11/26/2003, 4.2.1126.72,这一行转载 2013-09-27 15:25:41 · 1361 阅读 · 0 评论 -
INF安装信息文件②
.INF文件格式和作用如下所示: ;示例01 寒夜孤星 usbvm31b.inf 【华尔特F18型摄像头驱动】;Installation File (.inf) for USB PC Camera;zxy add coinstaller 2004/6/17[Version]Signature="$CHICAGO$"LayoutFile=Layout转载 2013-09-27 15:24:42 · 1732 阅读 · 0 评论 -
inf文件
文章来自:http://baike.baidu.com/link?url=0iUZEJl9PQnkPJkkskV-xJFS0hypWA-baSSOXjSWqKQYfHyC67GKvieL-az72VOxinf文件INF是Device INFormation File的英文缩写,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,INF文件中包含硬件转载 2013-09-27 16:12:04 · 1165 阅读 · 0 评论 -
【转】C++信号量Semaphore和MFC中的CSemaphore类使用【转】
文章来自:http://hi.baidu.com/hk2305621/item/7be11ad68e89bd2b39f6f7f1使用信号量内核对象进行线程同步主要会用到CreateSemaphore()、OpenSemaphore()、 ReleaseSemaphore()、WaitForSingleObject()和WaitForMultipleObjects()等函数。其 中,Crea转载 2013-10-31 10:15:30 · 1061 阅读 · 0 评论 -
线程同步--使用信号量
除了使用临界区与互斥可以完成线程间的同步外,还可以使用信号量CSemaphore。使用信号量还有一个好处便是:信号允许多个线程同时使用共享资源,这便与操作系统中的PV操作有些雷同的地方。它指出了同时访问共享资源的线程最大数目。 在信号量内部有一个计数器,当有线程访问共享资源时,计数器将自动递减,当它为0时,不再允许其他线程对共享资源的访问,直到有一个线程释放共享资源,从而完成对共享资源的转载 2013-10-31 09:35:20 · 970 阅读 · 0 评论 -
c++类成员函数作为回调函数
转载请标明出处:http://blog.youkuaiyun.com/lytxxt/archive/2009/12/15/5014658.aspx我以前写线程时要么老老实实照着声明写,要么使用C++类的静态成员函数来作为回调函数,经常会因为线程代码而破坏封装.之前虽然知道类成员函数的展开形式,但从没想过利用过它,昨天看深入ATL时无意中学会了这一招:)类成员方法是一个比较特殊的函数,它在编译时会被转载 2013-10-30 12:03:35 · 928 阅读 · 0 评论 -
类成员函数作为回调函数
文章来自:http://www.cnblogs.com/zhangminaxiang/archive/2013/02/27/2934466.html缘由:在给游戏做背景音乐类的时候,遇到了一个问题,需要用到MCI函数,但是MCI函数必须需要一个窗口来获得MCI执行的状态。特别在播放音乐完成的时候,MCI会向一个窗口发送播放完成消息。所以我需要创建一个窗口。窗口就肯定有窗口过程,转载 2013-10-29 14:51:18 · 1244 阅读 · 0 评论 -
用类的非静态成员函数作为线程入口函数的方法--转
一个类里的函数,通常要作为线程的入口函数,必须把它指定为static类型。static类型的类成员函数,并不具有this指针,也不能访问到protected或private类型的类成员。因为以上的不便,我们会想,怎样把一个普通的类成员函数,当作线程的“入口函数”呢?方法还是有的,具体说来:1. 创建一个线程,将类指针this和“入口函数”当作参数传入, 其实这里的“入口函数”已经不转载 2013-10-24 17:00:13 · 1701 阅读 · 0 评论 -
__try,__except,__finally,__leave
文章来自:http://hi.baidu.com/niujingqian/item/b7043fd66e1773856cce3fd8导读: 从本篇文章开始,将全面阐述__try,__except,__finally,__leave异常模型机制,它也即是Windows系列操作系统平台上提供的SEH模型。主人公阿愚将在这里与大家分享SEH的学习过程和经验总结。 SEH有两项非常转载 2013-10-24 16:04:07 · 816 阅读 · 0 评论 -
INF安装信息文件⑤
上一节INF安装信息文件④ ㈨、[IniFileUpdateSection(s)]节:指定 .ini 文件的更新。链接将在该节中创建。 节的名字是 UpdateInis。 ㈩、[DDInstall.Services]节:为了真正的使复制的文件成为目标系统上的驱动程序,必须通知服务器管理程序(SCM)。 例如安装在Windows 2000下的每个驱动程序在HK转载 2013-09-27 15:27:36 · 907 阅读 · 0 评论 -
INF安装信息文件④
㈥、[DestinationDirs] 节:指定硬盘上复制、删除或重命名节文件的位置(例如 \Windows 或 Windows\System)。 .INF 文件通过 [DestinationDirs] 节来指定操作的目标路径,语法如下: [DestinationDirs]file-list-section =ldid[, subdir ]Defaul转载 2013-09-27 15:26:45 · 1661 阅读 · 0 评论 -
USB设备驱动6:usb HID 报告描述符
文章来自:http://www.cnblogs.com/image-eye/archive/2012/02/28/2372362.html在网上看了许多前辈的文章,就是无法理解报告描述符中的那些数字字符所表达的含义,几经周折,总算大致了解了。code char MouseReportDescriptor[63] = { 0x05, 0x01,转载 2013-09-24 17:53:20 · 998 阅读 · 0 评论 -
Usb设备驱动3:root hub守护进程2
文章来自:http://www.cnblogs.com/image-eye/archive/2012/02/04/2338271.htmlHub正常工作后,主控制器就会定时询问hub是否有中断产生,当hub端口上有一个设备插入或拔除,hub就向主控制器发送urb请求,即把hub端口的变化状况告诉主控制器,这是通过urb请求来完成的,主机在处理完了这个urb后,就会调用urb所提供的完成函数转载 2013-09-24 17:48:23 · 1326 阅读 · 0 评论 -
usb设备枚举过程
文章来自:http://hi.baidu.com/nirvana68/item/bdaa30163a7d1c751009b5a9//*****************************************************************************作者:Eragon//********************************转载 2013-09-23 11:00:23 · 1695 阅读 · 0 评论 -
USB控制器的初始化和枚举
文章来自:http://os.chinaunix.net/a2005/1216/994/000000994121.shtml || \/转载 2013-09-23 10:46:12 · 1521 阅读 · 0 评论 -
usb
文章来自:http://www.codeproject.com/Articles/14500/Detecting-Hardware-Insertion-and-or-RemovalDetecting Hardware Insertion and/or RemovalBy Sam NG, 19 Jun 2006转载 2013-09-23 00:03:34 · 1469 阅读 · 0 评论 -
VC MFC工具栏(CToolBar)控件
文章来源:http://www.tiansin.com/thread-295.html工具栏工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar,所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创建,如CButton按钮类,现举一个用代码创建按钮控件并显示在窗口里的例子。CButton类的Create成转载 2013-09-17 02:08:13 · 1106 阅读 · 0 评论 -
获取usb设备的vid,pid
char *CUFormatDlg::GetDeviceName(int device){PSTORAGE_DEVICE_DESCRIPTOR pDevDesc;STORAGE_PROPERTY_QUERY Query; // 查询输入参数DWORD dwOutBytes; // IOCTL输出长度BOOL bResult; // IOCTL 返回值PUCHAR翻译 2013-09-29 14:58:47 · 4597 阅读 · 1 评论 -
MFC 基础教程
文章来自:http://www.cnblogs.com/lindj0307/articles/1316611.html MFC是一个编程框架 MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单转载 2013-09-13 11:23:09 · 4371 阅读 · 0 评论 -
Spy++原理初探
文章来源:http://www.vckbase.com/index.php/wv/1480 正文: 打开VC集成开发环境,建立一个基于对话框的工程。我们把这个工程取名为SpyXX。在窗体中画上一个图片框控件(Picture)、一个静态文本控件(Static)、两个复选框控件(Check Box)和一个选项卡控件(Tab Control)。界面设计如下图。探测器的制作需要转载 2013-09-10 18:15:19 · 1648 阅读 · 0 评论 -
C++ 存储方案
C++存储数据的三种不同方案方案的区别就在于数据保留在内存中的时间。1.自动存储持续性。 在函数定义中声明的变量(包括函数的形参)的存储持续性为自动的。他们在程序开始执行其所属的函数或代码块时被创建。在执行完函数或代码块时,他们使用的内存被释放。2.静态存储持续性 在函数定义外定义的变量和使用关键字static定义的变量的存储持续性都为静态。他们在程序的整个运行转载 2013-08-28 23:23:56 · 888 阅读 · 0 评论 -
usb体系结构
转载地址:http://blog.ednchina.com/zenhuateng/203584/Message.aspxUSB总线接口层:物理连接、电气信号环境、信息包传输机制;主机一方由USB主控制器和根集线器组成,而USB方则由设备中的USB接口组成。USB设备层:由主机方的USB系统软件和设备方的USB设备逻辑视图组成。USB功能层:代表客户软件和一个给定的设备功能接口之间的关系转载 2013-09-24 16:23:44 · 1133 阅读 · 0 评论 -
Usb设备驱动1:root hub 设备驱动安装
文章转自:http://www.cnblogs.com/image-eye/archive/2012/01/31/2333236.html按照设备模型的总线,设备,驱动模式,一条总线会把所有这条总线上的设备和驱动都挂载到总线的设备链表和驱动链表上,具体到usb总线上,就是usb主控制器,hub等设备,都需要按照设备模型的要求,作为设备挂载到usb总线的设备链表上,同时也需要把usb主控制器转载 2013-09-24 17:40:21 · 3512 阅读 · 0 评论 -
Usb设备驱动4:usb-skeleton例程
文章来自:http://www.cnblogs.com/image-eye/archive/2012/02/10/2345674.html有了前面的设备驱动基础,以及usb方面的基础知识,则可以很轻松的就理解usb-skeleton例程,并轻松的就能写出自己的简易usb driver了。下面是usb-skeleton例程的简易解析:/* * USB Skeleton drive转载 2013-09-24 17:49:02 · 949 阅读 · 0 评论 -
Usb设备驱动2:root hub守护进程1
文章来自:http://www.cnblogs.com/image-eye/archive/2012/02/02/2336035.html在终端下执行 ps –A| grep khubd,会显示出khubd的进程,这个就是hub的守护进程,我们的设备插入usb接口(不论是插入跟集线器,还是子集线器)后,就是这个守护进程发现的,然后通过中断的方式通知主控制,主控制器才开始调用hub的探测函数转载 2013-09-24 17:46:56 · 1309 阅读 · 0 评论 -
设备驱动基础1:设备模型之总线,驱动,设备
文章来自:http://www.cnblogs.com/image-eye/archive/2012/01/29/2331254.htmlKobject,kset是设备模型的基本结构体,设备模型使用这两个结构体来完成设备的层次关系,但在实际的设备驱动编写中,我们基本上用不到kobject,kset这些结构体,是因为这些结构体又被嵌入到更大的结构体中,原因在于kobject,kset结构体只转载 2013-09-24 17:44:08 · 895 阅读 · 0 评论 -
设备驱动基础0:设备模型之kobject,kset及其关系
文章来自:http://www.cnblogs.com/image-eye/archive/2012/01/29/2330838.htmlLinux2.6以后的设备驱动,都是在设备模型的基础上构建的,因此,要编写linux下的设备驱动程序,不论是usb设备,pci设备等,都需要了解设备模型。设备模型的基础结构体主要是kobject,kset这两个结构体:struct kobject转载 2013-09-24 17:43:10 · 967 阅读 · 0 评论 -
Usb设备驱动0:从usb设备被发现开始
文章来自:http://www.cnblogs.com/image-eye/archive/2012/01/30/2331742.html经过对设备模型的整理,消化,就有了编写一个设备驱动程序的基础。因工作关系,需要熟悉usb设备驱动,因此,就选择usb设备驱动作为开始。 一个usb设备,是如何被usb系统发现并安装对应的设备驱动程序的,从而使得usb设备可以正常工作?转载 2013-09-24 17:42:24 · 1814 阅读 · 0 评论 -
[RedHat] redhat 下telnet使用详解
文章来自:http://www.cnblogs.com/image-eye/archive/2012/03/28/2421717.html一.开启telnet服务 出于安全考虑,linux默认是不允许telnet的.如果你需要使用telnet服务,首先你需要开启这项服务. 方法如下: 1.cp /etc/xinetd.d/telnet /etc/xinetd.转载 2013-09-24 17:55:01 · 1553 阅读 · 0 评论 -
Pci设备驱动1:pci设备驱动实例(realtek8168)
文章来自:http://www.cnblogs.com/image-eye/archive/2012/02/15/2352912.htmlRealtek8168网卡时pci接口的网卡,其驱动程序就是一个PCI设备的驱动程序实例,我们一起看看其流程。1. 首先,初始化模块调用static inline int pci_register_driver(struct pci_driver转载 2013-09-24 17:52:59 · 1486 阅读 · 0 评论 -
Pci设备驱动0:设备枚举
文章来自:http://www.cnblogs.com/image-eye/archive/2012/02/15/2352699.html 有了设备模型基础及usb设备驱动的基础知识,来了解PCI设备驱动,就相对简单了,因为PCI设备驱动仍然套用了设备驱动模型的方式,用到的仍然是设备模型的相应函数,只是把相应的pci设备挂载到PCI总线的device队列,而凭此驱动则挂载到pci总线的转载 2013-09-24 17:51:29 · 1473 阅读 · 0 评论