摘要:
在VB中利用API进行串口通信在VB中利用API进行串口通信 一般来说,在VB中编写串口通讯程序,首先考虑到是使用MSComm控件,可是该控件不能设置超时,而且对许多内部的参数进行了隐藏,从而不能满足有些具体的工作。 同时,由于串口通信是基于字节流的,为方便程序设计,还编写了三个简单的辅助函数,并写了一个详细的测试代码。Option Explicit Option Base 0 Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName
阅读全文
posted @ 2013-06-09 22:59
MMLoveMeMM
阅读(2032)
推荐(0)
摘要:
前言: 近日在网上看到很多人问及如何关闭一下线程,但是我看网上给出的并不详细,而且有些方法还是错误的。小弟在此拙作一篇,不谈别的,只谈及如何正确的关闭MFC的线程,至于Win32和C RunTime的线程暂不涉及。一.关于MFC的线程 1.MFC的线程有两种,一种称为Work线程,一种称为UI线程。一般情况下Work线程与UI线程的区别主要在于UI线程有消息队列(并不是有没有界面,这点要注意,UI线程也是可以没有界面的)。 2.创建这两种线程的区别也不大,可以从创建函数看出。[cpp] view plaincopyprint?//Work线程 CWinThread*AfxBeginThr...
阅读全文
posted @ 2013-06-08 22:54
MMLoveMeMM
阅读(402)
推荐(0)
摘要:
前面部分的头文件可以不需要,这个头文件适应ATMEL128 CPU#include <iom128.h>#include <intrinsics.h>/********************************************************************* 快速福利叶变换C函数函数简介:此函数是通用的快速傅里叶变换C语言函数,移植性强,以下部分不依 赖硬件。此函数采用联合体的形式表示一个复数,输入为自然顺序的复 数(输入实数是可令复数虚部为0),输出为经过FFT变换的自然顺序的 复数使用说明:使用此函数只需更改宏定义FFT_N的值即可实
阅读全文
posted @ 2013-05-31 17:38
MMLoveMeMM
阅读(708)
推荐(1)
摘要:
本文测试环境 :X86-64 bit 架构的服务器CentOS x64 5.xgcc version 4.1.2 20080704指针和数组是C的比较难搞懂的知识点, 需要结合内存来学习, 非常感谢各位兄弟为我指点迷津.下面总结一下 :首先说明一下C程序在运行时, 不同的内容或变量分别存储在什么地方?分了几块区域分别是, code, constants, global, heap, stack; (内存地址从低到高)其中constants存储常量(常量值不允许修改), global存储在所有函数以外定义的全局变量(全局变量允许修改), heap是一块动态内存区域(可存放持久化内容, 不会自动释
阅读全文
posted @ 2013-05-31 16:55
MMLoveMeMM
阅读(331)
推荐(0)
摘要:
根据前面对wav格式信息的了解:给出如下函数:两颗星的变量指向从数据wav文件读取的音频数据,不包括wav头部信息,获得的数据直接可以放到wavoutWrite函数中进行播放输出(当然事先还要打开设备之类的).用CFile读取wav文件数据,作为输入.int read_wav_head(WAVEFORMATEX *wf, char **out_buffer, int *out_len, char *in_buffer, int in_len){char *lp_pos; int itmp; lp_pos = in_buffer; if(in_buffer == NULL || in_len .
阅读全文
posted @ 2013-05-31 16:38
MMLoveMeMM
阅读(1565)
推荐(0)
摘要:
将录取的数据保存为wav输出,需要注意wav的数据组成格式,基本需要下面三个操作过程.a>产生标准的wav头部信息数据;b>获得录取的声音数据;a>数据后面连接b>数据,合并上面两个数据,得到一个总数据.c>像操作文件读写一样将上面两个数据一次性写入.wav文件即可.下面给出上面步骤实现函数:int write_wav_head(WAVEFORMATEX *wf, char *in_buffer, int in_len, char **out_buffer, int *out_len){char *buffer; int *int_tmp,pos=0; *out_
阅读全文
posted @ 2013-05-31 16:34
MMLoveMeMM
阅读(537)
推荐(0)
摘要:
录制声音一般采用两种机制:第一种: 直接在UI下采用消息;第二种: 开辟一个线程单独进行;下面先介绍第一种如何进行,DEMO是网上的,挺零碎的,我费了点功夫,调试能直接使用的.<1> : wav族函数进行声音采集和播放时,会以下几个消息:MM_WIM_OPEN、MM_WIM_DATA、MM_WIM_CLOSE、MM_WOM_OPEN、MM_WOM_DONE、MM_WOM_CLOSE所以新建一个MFC工程,并且添加如下三个消息:MM_WIM_OPEN、MM_WIM_DATA、MM_WIM_CLOSE当然也可以将另外三个播放的消息也一并添加.假设新建了Recorde MFC Dialo
阅读全文
posted @ 2013-05-31 16:21
MMLoveMeMM
阅读(910)
推荐(0)
摘要:
根据前面几篇关于语音操作文章,实现播放wav音频文件:a.>加载wav文件;b.>读取wav文件信息;c.>获得wav数据块;d.>打开音频设备;e.>装载读取的数据;f.>发送到音频设备上播放数据;g.>关闭设备释放内存./*************************************************************************//*************************Author : MMLoveMeMM*****************************//****************
阅读全文
posted @ 2013-05-29 14:16
MMLoveMeMM
阅读(949)
推荐(0)
摘要:
查看下面文章时,请用记事本打开一个wav格式的文件.WAV格式是微软公司开发的一种声音文件格式,也叫波形声音文件,是最早的数字音频格式,被Windows平台及其应用程序广泛支持。WAV格式支持许多压缩算法,支持多种音频位数、采样频率和声道,采用44.1kHz的采样频率,16位量化位数,因此WAV的音质与CD相差无几,但WAV格式对存储空间需求太大不便于交流和传播. WAV来源于对声音模拟波形的采样。用不同的采样频率对声音的模拟波形进行采样可以得到一系列离散的采样点,以不同的量化位数(8位或16位)把这些采样点的值转换成二进制数,然后存入磁盘,这就产生了声音的WAV文件,即波形文件。Micro.
阅读全文
posted @ 2013-05-29 12:28
MMLoveMeMM
阅读(1178)
推荐(0)
摘要:
<1> :WAVEHDR结构的介绍根据MSDN说明文档typedef struct { LPSTR lpData;//波形缓冲数据(传入首地址) DWORD dwBufferLength; //缓冲区长度 DWORD dwBytesRecorded; //指明录音时缓冲区容量 DWORD dwUser; //用户数据 DWORD dwFlags; //提供缓冲区标示 DWORD dwLoops; //循环次数 struct wavehdr_tag * lpNext; //预留,NULL DWORD reserved; //预留,0} WAVEHDR; 比如:WAVEHDR wave
阅读全文
posted @ 2013-05-29 11:12
MMLoveMeMM
阅读(2406)
推荐(0)
摘要:
<1> : 打开音频输出设备WINAPI :MMRESULT waveOutOpen( LPHWAVEOUT phwo,//返回设备句柄的指针,传入地址; UINT uDeviceID,//设备ID号,数值大小-1<uDeviceID<waveOutGetNumDevs()返回值; LPWAVEFORMATEX pwfx,//WAVEFORMATEX格式指针,申请波形格式; DWORD dwCallback,//回调函数,如果不使用回调函数机制,设为NULL; DWORD dwCallbackInstance,//回调函数事例数据,不用于窗口; DWORD fdwOpe
阅读全文
posted @ 2013-05-28 19:52
MMLoveMeMM
阅读(652)
推荐(0)
摘要:
下面所有操作在新建console或者MFC程序时均要添加以下头文件和库:#include <mmsystem.h>#include <dsound.h>库添加:菜单Setting->Link->Object/Library Moduleswinmm.lib<1> : 获取音频设备数量:a>.获取输入设备数量:UINT waveInGetNumDevs(VOID); b>.获取输出设备数量:UINT waveOutGetNumDevs(VOID); 返回值均为整形.<2> : 设备属性:a>.输入设备属性:MMRESU
阅读全文
posted @ 2013-05-28 19:28
MMLoveMeMM
阅读(976)
推荐(0)
摘要:
今天把目前遇到的一些问题及NFS的基本配置做一下个人总结:一、NFS的概念 NFS (Network File System/网络文档系统): 1 、配置Linux 系统之间的文档共享(Linux 和Windows 间的文档共享需采用SAMBA 服务); 2 、NFS 只是一种文档系统,本身没有传输功能,是基于RPC 协议实现的,才能达到两个Linux 系统之间的文档目录共享; 3 、NFS 为C/S(客户机/服务器) 架构; 二、服务器端配置 1 、配置文档 主要配置文档为:/etc/exports 格式为:共享...
阅读全文
posted @ 2013-05-24 19:18
MMLoveMeMM
阅读(2814)
推荐(0)
摘要:
NFS问题: nfs与portmap都正常启动了 [root@server /]# showmount -e mount clntudp_create: RPC: Program not registered[root@server /]# rpc.mountd[root@server /]# showmount -e Export list for server.example.com:/home *[root@server /]# 解决问题 。
阅读全文
posted @ 2013-05-24 19:16
MMLoveMeMM
阅读(423)
推荐(0)
摘要:
简介 对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。 什么是回调函数? 简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。 为什么要使用回调函数? 因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。 如果想知道回调函数在实际中有什么作用,先假...
阅读全文
posted @ 2013-05-24 01:19
MMLoveMeMM
阅读(406)
推荐(0)
摘要:
BOOL PathFileExists(LPCTSTR pszPath); Determines if a file exists.---经检测,该函数可以检测文件或目录是否存在!RemarksThis function tests the validity of the file and path. It works only on the local file system or on a remote drive that has been mounted to a drive letter. It will return FALSE for remote file paths that
阅读全文
posted @ 2013-05-23 17:46
MMLoveMeMM
阅读(5864)
推荐(0)
摘要:
BOOL PathFileExists(LPCTSTR pszPath); Determines if a file exists.---经检测,该函数可以检测文件或目录是否存在!RemarksThis function tests the validity of the file and path. It works only on the local file system or on a remote drive that has been mounted to a drive letter. It will return FALSE for remote file paths that
阅读全文
posted @ 2013-05-23 16:31
MMLoveMeMM
阅读(443)
推荐(0)
摘要:
一、warning LNK4089vc编译时Debug版本下没问题,release版本下出现如下警告: LINK : warning LNK4089: all references to “ODBC32.dll” discarded by /OPT:REF LINK : warning LNK4089: all references to “ADVAPI32.dll” discarded by /OPT:REF LINK : warning LNK4089: all references to “SHELL32.dll” discarded by /OPT:REF LINK : warning
阅读全文
posted @ 2013-05-23 15:27
MMLoveMeMM
阅读(1430)
推荐(0)
摘要:
创建或打开工程Icon(以下都以工程名为Icon为例)。 单击Workspace窗口的ResourceView标签,选中资源ID为IDR_MAINFRAME图标资源,然后按Delete键把它删除掉。注意:一定要把它删除才行。 从Developer Studio的Insert菜单中选择Resource,然后选择Icon,新建(New)一个新的图标或导入(Import)一个已有的图标。 把新图标的资源ID改为AFX_IDI_STD_MDIFRAME(如果是MDI应用程序)或改为AFX_IDI_STD_FRAME(如果是SDI应用 程序)。AFX_IDI_STD_MDIFRAME和AFX_IDI_S
阅读全文
posted @ 2013-05-23 00:46
MMLoveMeMM
阅读(588)
推荐(0)
摘要:
VC++[MFC]// 第一个参数是将要替换图标的exe文件路径,第二个参数是替换的ico文件路径void ReplaceExeIco(LPCTSTR lpszApp, LPCTSTR lpszIco){try{ CFile file; file.Open(lpszIco, CFile::modeRead); LONG lOffset = 0; DWORD dwSize = 0; DWORD dwBytes = 0; CONST BYTE bGroupIcoSize = 0x18; BYTE* lpGroupIco = new BYTE[bGroupIcoSize]; memset(lpGro
阅读全文
posted @ 2013-05-23 00:27
MMLoveMeMM
阅读(638)
推荐(0)
摘要:
1. 使用_access函数,函数原型为 int _access( const char *path, int mode );2. 使用CreateFile函数,函数原型为: HANDLE CreateFile( LPCTSTR lpFileName, // pointer to name of the file DWORD dwDesiredAccess, // access (read-write) mode DWORD dwShareMode, // share mode LPSECURITY_ATTRIBUTES lpSecurityAttributes, // pointer to
阅读全文
posted @ 2013-05-22 23:14
MMLoveMeMM
阅读(361)
推荐(0)
摘要:
终止线程 有两种情况可以使线程结束:控制函数结束或者根本就不允许线程完成,而提前终止它。我们可以想象在WORD中进行后台打印,如果打印结束了,那线程就可以结束了。如果用户中止了打印,那后台打印线程也要终止了。本文将主要介绍对这两种情况的实现,并且介绍如何获得线程的结束代码。 对于工作线程,结束它是比较容易的:退出线程函数然后返回一个结束原因的代码就是了。用户可以使用AfxEndThread函数或直接利用return返回。通常0代表成功返回,这不是硬性规定,一切要取决于你了。对于用户界面线程,调用::PostQuitMessage,它所要的唯一的参数就是返回代码,也就是工作线程中的那个码,性质是
阅读全文
posted @ 2013-05-22 00:35
MMLoveMeMM
阅读(3527)
推荐(0)
摘要:
关键词: MFC 1、消息处理和消息映射的概念 2、消息种类 3、常用消息 4、消息处理函数 5、消息映射 所有windows应用程序都是消息驱动的,消息处理是所有windows应用程序的核心部分。当用户单击鼠标或改变窗口大小时,都将给适当的窗口发送消息。每个消息都对应于某个特定的事件。一、消息处理和消息映射的概念1、消息 消息主要指由用户操作而向应用程序发出的信息,也包括操作系统内部产生的消息。例如,单击鼠标左按钮,windows将产WM_LBUTTONDOWN消息,而释放鼠标左按钮将产生WM_LBUTTONUP消息,按下键盘上的字母键,将产生WM_CHAR消息。2、windows消息...
阅读全文
posted @ 2013-05-22 00:11
MMLoveMeMM
阅读(582)
推荐(0)
摘要:
一般情况下,调用AfxBeginThread()来一次性地创建并启动一个线程,但是也可以通过两步法来创建线程:首先创建CWinThread类的一个 对象,然后调用该对象的成员函数CreateThread()来启动该线程。 virtual BOOL CWinThread::InitInstance(); 重载该函数以控制用户界面线程实例的初始化。初始化成功则返回非0值,否则返回0。用户界面线程经常重载该函数,工作者线程一般不 使用InitInstance()。 virtual int CWinThread::ExitInstance(); 在线程终结前重载该函数进行一些必要的清理工作...
阅读全文
posted @ 2013-05-21 11:14
MMLoveMeMM
阅读(1635)
推荐(0)
摘要:
有两种方法:1. 单线程解决:OnBtn1(){ while(m_bLoop) { your code.... // 派发消息 MSG msg; if (PeekMessage(&msg,(HWND)NULL, 0, 0, PM_REMOVE)) { ::SendMessage(msg.hwnd, msg.message, msg.wParam, msg.lParam); } }}OnBtn2(){ m_bLoop = FALSE;}2. 多线程 (参考:http://www.vckb...
阅读全文
posted @ 2013-05-21 00:35
MMLoveMeMM
阅读(3592)
推荐(0)
摘要:
<1> : 静态文本框字体设置:下面可以在oninitdialog中设置:CFont cfont;//全局变量cfont.CreateFont(68, //这个数字就是字体大小了 0,0,0,FW_BOLD, FALSE,FALSE, 0, ANSI_CHARSET, // nCharSet OUT_DEFAULT_PRECIS, // nOutPrecision CLIP_DEFAULT_PRECIS, // nClipPrecision DEFAULT_QUALITY, // nQuality DEFAULT_PITCH | FF_SWISS, "Arial"
阅读全文
posted @ 2013-05-20 20:16
MMLoveMeMM
阅读(189)
推荐(0)
摘要:
CTime( ) throw( );CTime( __time64_t time) throw( );CTime( int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec, int nDST = -1 );CTime( WORD wDosDate, WORD wDosTime, int nDST = -1 );CTime( const SYSTEMTIME& st, int nDST = - 1 ) throw( );CTime( const FILETIME& ft, int nDST = - 1 );CT
阅读全文
posted @ 2013-05-20 19:23
MMLoveMeMM
阅读(323)
推荐(0)
摘要:
参考:http://www.cnblogs.com/chuncn/archive/2009/03/12/1409261.htmlCTime类1.构造和初始化CTime类对象CTime类有下列构造函数:CTime( );CTime( const CTime& timeSrc );CTime( time_t time );CTime( int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec, int nDST = -1 );CTime( WORD wDosDate, WORD wDosTime, int nDST = -
阅读全文
posted @ 2013-05-20 19:22
MMLoveMeMM
阅读(583)
推荐(0)
摘要:
3种方法:1、在一个cpp文件中用extern声明,然后在其他文件中定义就可以用2、在**APP类中做公有变量,其他类中用AfxGetApp()得到一个App对象指针就可引用 3、专门写一个全局类,里边的变量及方法全部声明为静态具体说明如下(来自网络):最好在.cpp 中声明,如果其它文件用到这个变量,就用extern 就行了 1.cpp int x ; …… 2.cpp (用到了1.cpp 的 x) extern x; …… 这样,你在2文件中就可以把 X 当全局变量来用了 -------------------------------------------------...
阅读全文
posted @ 2013-05-20 19:21
MMLoveMeMM
阅读(836)
推荐(0)
摘要:
c++中输出和输入导屏幕和键盘的类别声明包含再标题文件<iostrream.h>中,而磁盘类文件的I/O则声明再包含标题文件<fstream.h>内。输入和输出格式:输出到磁盘ofsteam 识别字(“文件名”)从磁盘读文件ifsteam 识别字("文件名“)例如:ofstream outfile("data.txt"); //写入到磁盘的data.txt中格式化输入输出:1 整数数据的输入输出整数数据存储再磁盘内,每个文字各占一个字节。例如:#include <fstream.h>#include <iostream.h
阅读全文
posted @ 2013-05-15 11:57
MMLoveMeMM
阅读(953)
推荐(0)
摘要:
函数指针是通过指向函数的指针间接调用函数。函数指针可以实现对参数类型、参数顺序、返回值都相同的函数进行封装,是多态的一种实现方式。由于类的非静态成员函数中有一个隐形的this指针,因此,类的成员函数的指针和一般函数的指针的表现形式不一样。1、指向一般函数的指针函数指针的声明中就包括了函数的参数类型、顺序和返回值,只能把相匹配的函数地址赋值给函数指针。为了封装同类型的函数,可以把函数指针作为通用接口函数的参数,并通过函数指针来间接调用所封装的函数。下面是一个指向函数的指针使用的例子。#include <iostream.h>/*指向函数的指针*/typedef int (*pFun)
阅读全文
posted @ 2013-05-15 11:46
MMLoveMeMM
阅读(414)
推荐(0)
摘要:
CString::MakeUppervoid MakeUpper( );Remarks备注Converts this CString object to an uppercase string.将原对象的所有小写英文字母转换为大写。(只是将小写的英文字母转换为大写,对于其它的字符不做变化,例如:大写字符,数字,汉字)Example实例The following example demonstrates the use of CString::MakeUpper.// example for CString::MakeUpperCString s( "abc" );s.Mak
阅读全文
posted @ 2013-05-14 20:09
MMLoveMeMM
阅读(427)
推荐(0)
摘要:
BSTR、char*和CString转换 (1) char*转换成CString 若将char*转换成CString,除了直接赋值外,还可使用CString::Format进行。例如:char chArray[] = "This is a test"; char * p = "This is a test"; 或LPSTR p = "This is a test"; 或在已定义Unicode应的用程序中TCHAR * p = _T("This is a test"); 或LPTSTR p = _T("Th
阅读全文
posted @ 2013-05-14 17:59
MMLoveMeMM
阅读(202)
推荐(0)
摘要:
在MFC程序中输出调试信息的方法有两种,一种是使用TRACE宏,可以向Output窗口输出调试信息;另一种是用MessageBox,弹出消息框来输出调试信息,但会影响程序的运行。其实有一种方法可以更为方便的输出调试信息,就是输出到控制台(Console)中,即不影响程序运行,又便于查看调试信息。方法如下:无论下面的的操作和写法如何的犀利,个人推荐最简单快捷的方式:AllocConsole();// 打开控制台资源freopen( "CONOUT$", "w+t", stdout );// 申请写freopen( "CONIN$", &
阅读全文
posted @ 2013-05-14 17:53
MMLoveMeMM
阅读(3614)
推荐(0)
摘要:
最近学数据结构老是做实验常用到字符串和数字的转换想找却发现网上的资料太散所以搜集整理一下 方便以后再用atof(将字符串转换成浮点型数)atoi(将字符串转换成整型数)atol(将字符串转换成长整型数)strtod(将字符串转换成浮点数)strtol(将字符串转换成长整型数)strtoul(将字符串转换成无符号长整型数)toascii(将整型数转换成合法的ASCII 码字符)toupper(将小写字母转换成大写字母)tolower(将大写字母转换成小写字母) atof(将字符串转换成浮点型数)相关函数 atoi,atol,strtod,strtol,strtoul表头文件 #include &
阅读全文
posted @ 2013-05-13 18:22
MMLoveMeMM
阅读(290)
推荐(0)
摘要:
(1) getch()和getche()函数 这两个函数都是从键盘上读入一个字符。其调用格式为: getch(); getche(); 两者的区别是: getch()函数不将读入的字符回显在显示屏幕上, 而getche() 函数却将读入的字符回显到显示屏幕上。 例1: #include<stdio.h> main() { char c, ch; c=getch(); /*从键盘上读入一个字符不回显送给字符变量c*/ putchar(c); /*输出该字符*/ ch=getche(); /*从键盘上带回显的读入一个字符送给字符变量ch*/ putchar(ch); }...
阅读全文
posted @ 2013-05-13 18:21
MMLoveMeMM
阅读(493)
推荐(0)
摘要:
如果你想打开一个USB管道,你首先要知道这种USB设备的GUID和管理道名称,获取句柄以后就可以使用ReadFile/WriteFile进行读写了!以下是代码,请参考!!// filename是管道名称,如pipe01等int CUSBImpObject::open_file( char *filename){int successOpened = 0,i;int NumOpened;HANDLE h;NumOpened=OpenAllUsbDevices((LPGUID) &GUID_CLASS_I82930_BULK); if(NumOpened<=0) return 0;
阅读全文
posted @ 2013-05-09 19:02
MMLoveMeMM
阅读(387)
推荐(0)
摘要:
运行第一个module<1> : 在ubuntu系统,编译模块,将模块拷贝到U盘,或者先放入与windows XP共享盘,然后拷贝到U盘,或者上传方式到nft服务器.<2> : 将U盘插入嵌入式系统,需要重新镜像U盘[root@Root /]# cat /proc/partitionsmajor minor #blocks name 31 0 512 mtdblock0 31 1 2048 mtdblock1 31 2 257280 mtdblock2 8 16 4101120 sdb 8 17 4101088 sdb1[root@Root /]# mount /dev
阅读全文
posted @ 2013-05-09 18:23
MMLoveMeMM
阅读(142)
推荐(0)
摘要:
利用U盘导入程序到系统<1> : 将有U盘插入linux系统,利用命令挂在U#mount /dev/sda1 /mnt怎么样知道是sda1,而不是sda2…在挂载之前先输入命令查看:#cat /proc/partitions例如[root@Root /]# cat /proc/partitionsmajor minor #blocks name 31 0 512 mtdblock0 31 1 2048 mtdblock1 31 2 257280 mtdblock2 8 0 4101120 sda 8 1 4101088 sda1<2> : 当输入挂载命令后,发现终端提示
阅读全文
posted @ 2013-05-09 18:21
MMLoveMeMM
阅读(497)
推荐(0)
摘要:
ForewordTable of Contents作者声明版本和注意感谢译者注作者声明《Linux内核驱动模块编程指南》最初是由Ori Pomerantz为2.2版本的内核编写的 ,后来,Ori将文档维护的任务交给了PeterJay Salzman,Peter完成了2.4内核版本文档的编写,毕竟Linux内核驱动模块是一个更新很快的内容。现在,Peter也无法腾出足够的时间来完成2.6内核版本文档的编写,目前该2.6内核版本的文档由合作者Michael Burian 完成。版本和注意Linux内核模块是一块不断更新进步的内容,在LKMPG上总有关于是否保留还是历史版本的争论。Michael和我
阅读全文
posted @ 2013-05-08 16:41
MMLoveMeMM
阅读(1474)
推荐(0)