摘要: 核心代码如下:HWND hVideoWnd = capCreateCaptureWindow(NULL,WS_POPUP,0,0,200,300,hWnd,0); //创建摄像头视频窗口if (capDriverConnect(hVideoWnd,0)) //连接驱动程序{ ::SetParent(hVideoWnd,hWnd); //设置父窗口 ::SetWindowLong(hVideoWnd,GWL_STYLE,WS_CHILD); ::SetWindowPos(hVideoWnd,NULL,10,10,300, 300, SWP_NOZORDER); ... 阅读全文
posted @ 2013-09-05 15:26 皁仩腄覺 阅读(302) 评论(0) 推荐(0) 编辑
摘要: (一) IO模型I/O设备处理方式一般有两种 同步和异步同步阻塞:这种方式就一直读写IO直道操作完成或者失败。异步IO:使用overlapped I/O。overlapped I/O是WIN32的一项技术,你可以要求操作系统为你传送数据,并且在传送完毕时通知你。(二)使用overlapped I/O: 先来看看OVERLAPPED 结构体有两种定义:typedef struct _OVERLAPPED { DWORD Internal; DWORD InternalHigh; DWORD Offset; DWORD OffsetHigh; HANDLE hEvent; }O... 阅读全文
posted @ 2013-09-04 15:55 皁仩腄覺 阅读(987) 评论(0) 推荐(0) 编辑
摘要: (1)几个概念物理地址:芯片级别的内存寻址,由地址总线决定的,一旦连接到CPU 物理地址不会更变。虚拟内存:抽象出来的虚拟内存地址,真实不存在。进程使用虚拟内存地址,虚拟内存管理单元(MMU)转换为真实的物理地址。逻辑地址:内存分段机制中使用(早期内存管理机制),逻辑地址是段地址和段内便宜地址组合值。线性地址:对应页式内存管理中 转换前的地址。线性空间的大小在32-bit平台上为4GB的固定大小,对于每个进程都是这样(一个应用可以是多进程的,在OS眼中,是以进程为单位的)。也就是说线性空间不是进程共享的,而是进程隔离的,每个进程都有相同大小的4GB线性空间。一个进程对于某一个内存地址的访问,与 阅读全文
posted @ 2013-09-03 17:33 皁仩腄覺 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 定时器是一种轮询的机制,每隔一段时间去执行下相关的函数。(1) 内核中 定时器结构 Linux在include/linux/timer.h头文件中定义了数据结构timer_list来描述一个内核定时器 CODE>struct timer_list { struct list_head list; unsigned long expires; unsigned long data; void (*function)(unsigned long); } 1> list: 双向链表元素list:用来将多个定时器连接成一条双向循环队列。 2> expires:指定定时器到期的时间,这 阅读全文
posted @ 2013-09-03 15:21 皁仩腄覺 阅读(256) 评论(0) 推荐(0) 编辑
摘要: DebugView是一个系统调试信息输出的捕获工具。在程序中使用如下函数: 1> OutputDebugString 或者在MFC中使用TRACE 2> 内核模式中使用Out_Debug_String,DbgPrint ,_Debug_Printf_Service编译程序为DEBUG版本,然后运行程序(不是在vs 中运行,是单独运行),打开debugview 就可以在其中看到输出的调试信息。Debugview 也支持远程调试,在本机运行Dbgview.exe /c/s/t 可以让DebugView以服务的形式运行。在远端打开Debugview,点击Computer/connect 阅读全文
posted @ 2013-09-02 09:49 皁仩腄覺 阅读(5858) 评论(0) 推荐(0) 编辑
摘要: 中断通常分为同步中断和异步中断: 同步中断:是当指令执行时由CPU控制单元产生,之所以称之为同步,是因为只有在一条指令终止执行后CPU才会发出中断 异步中断:是由其它硬件设备依照CPU时钟信号随机产生。 通常把同步中断称之为异常,把异步中断称之为中断异步中断可能为以下两种: 可屏蔽中断:I/O设备发出的所有中断请求(IRQ)都产生可屏蔽中断。 非屏蔽中断:只有几个危急的事件(如硬件故障)才引起非屏蔽中断。非屏蔽中断总是由CPU辩认的。异常(fault):根据CPU控制单元产生异常时保存在内核态堆栈eip寄存器的值分为以下三种: 故障:通常是可以纠正的,一旦纠正,程序就可以在不失... 阅读全文
posted @ 2013-08-30 14:58 皁仩腄覺 阅读(263) 评论(0) 推荐(0) 编辑
摘要: proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。主要目录结构如下:apm 高级电源管理信息cmdline 内核命令行Cpuinfo 关于Cpu信息Devices 可以用到的设备(块设备/字符设备)Dma 使用的DMA通道Filesystems 支持的文件系统Interrupts 中断的使用Ioports I/O端口的使用K 阅读全文
posted @ 2013-08-19 16:33 皁仩腄覺 阅读(395) 评论(0) 推荐(0) 编辑
摘要: #!/usr/bin/bash #备份的目的目录 BACDIR="/home/wxr/backup" #备份的子目录每天备份在一个子目录下 SUBDIR=backup-$(date +%m%d%y) #备份的源目录 DIRS[0]="/home/wxr/workspace" DIRS... 阅读全文
posted @ 2013-08-19 10:02 皁仩腄覺 阅读(328) 评论(0) 推荐(0) 编辑
摘要: #!/bin/bash# 定义一个方法 它有一个参数代表目录foreachd(){ for file in $1 do if [ -d $file ] then ec... 阅读全文
posted @ 2013-08-16 16:10 皁仩腄覺 阅读(759) 评论(0) 推荐(0) 编辑
摘要: Linux 就是通常所说的单内核(monolithic kernel),即操作系统的大部分功能都被称为内核,并在特权模式下运行。通过 Linux 内核模块(LKM)可以在运行时动态地更改 Linux。Linux可加载内核模块(从内核的 1.2 版本开始引入)是 Linux 内核的最重要创新之一。它们提供了可伸缩的、动态的内核。探索隐藏在可加载模块后面的原理,并学习这些独立的对象如何动态地转换成 Linux 内核的一部分。(1) linux 内核模块的创建 LKM 包含 entry 和 exit 函数。当向内核插入模块时,调用 entry 函数,从内核删除模块时则调用 exit 函数。因为... 阅读全文
posted @ 2013-08-16 13:37 皁仩腄覺 阅读(198) 评论(0) 推荐(0) 编辑