qintangtao

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 31 下一页

2013年3月12日

摘要: 首先,先从简单的说起,本地时间(LocalTime),也就是系统设置时区的当前时间!比如说当前系统设置的时区为“(UTC+08:00)北京,重庆,香港特别行政区,乌鲁木齐”(东八区),系统的右下角通知区域显示的时间为“2012/5/18 16:57”,那么这个时间就是当前系统的本地时间! 要说清楚什么是系统时间(SystemTime)之前先来了解一下格林威治时间。本初子午线被定义为通过格林威治经线的位置,相对这条经线的时区向东递增,向西递减,每隔一个时区,相差一个小时。那么,上面例子中的东八区的时间就是相对于格林威治时间加上了八个小时!而Windows的系统时间是就是格林威治时间!知道了这一. 阅读全文
posted @ 2013-03-12 13:06 qintangtao 阅读(1119) 评论(0) 推荐(0) 编辑

摘要: struct tm {int tm_sec; /*代表目前秒数,正常范围为0-59,但允许至61秒 */int tm_min; /*代表目前分数,范围0-59*/int tm_hour; /*从午夜算起的时数,范围为0-23*/int tm_mday; /*目前月份的日数,范围01-31*/int tm_mon; /*代表目前月份,从一月算起,范围从0-11*/int tm_year; /*从1900 年算起至今的年数*/int tm_wday; /*一星期的日数,从星期一算起,范围为0-6 */int tm_yday; /*从今年1月1日算起至今的天数,范围为0-365*/int tm_is 阅读全文
posted @ 2013-03-12 10:31 qintangtao 阅读(2892) 评论(0) 推荐(0) 编辑

2013年3月9日

摘要: VS2008环境编译驱动A、VC9驱动编译配置B、VC9集成环境下编译驱动一、新建一个空的win32控制台程序1、选(文件→新建→项目→VisualC++项目→win32→win32控制台项目)创建一个填写上名称event然后按确定在弹出的win32应用程序向导里选应用程序设置→附加选项勾选空项目→完成。二选项目菜单→添加现有项→添加所有驱动相关的*.h,*.c,*.cpp,*.rc之类的文件。三、选工具(T)→选项(O)....→项目→VC++目录→1、在可执行文件目录中添加:D:\WINDDK\3790.1830\BIN\X862、在包含文件目录添加如下路径D:\WINDDK\3790.1 阅读全文
posted @ 2013-03-09 15:23 qintangtao 阅读(2811) 评论(0) 推荐(1) 编辑

摘要: VS2003驱动开发环境配置A、VS2003驱动编译配置B、VS2003集成环境下编译驱一、新建一个空的win32控制台程序1、选(文件→新建→项目→VisualC++项目→win32→win32控制台项目)创建一个填写上名称event然后按确定在弹出的win32应用程序向导里选应用程序设置→附加选项勾选空项目→完成。二选项目菜单→添加现有项→添加所有驱动相关的*.h,*.c,*.cpp,*.rc之类的文件。三、选工具(T)→选项(O)....→项目→VC++目录→1、在可执行文件目录中添加:D:\WINDDK\3790.1830\BIN\X862、在包含文件目录添加如下路径D:\WINDD. 阅读全文
posted @ 2013-03-09 15:17 qintangtao 阅读(383) 评论(0) 推荐(0) 编辑

摘要: 手动加载NT式驱动(非工具)A、观察注册表B、手动运行驱动C、手动停止驱动运行 regedit.exeHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ServicesImagePath \??\G:\驱动教程\018_读出SSDT表当前函数地址\mini_ddk\sys\i386\DDKHelloWorld.sys"DisplayName"="DDKHelloWorld""Type"=dword:00000001 //1表示载入驱动"Start"=dword:00000003 阅读全文
posted @ 2013-03-09 14:58 qintangtao 阅读(1348) 评论(0) 推荐(0) 编辑

摘要: NT式驱动的卸载A、卸载驱动流程B、内核函数DeleteServiceC、内核函数ControlServiceD、构建UnLoadSys函数E、测试并查看调试信息一、卸载驱动流程1、用OpenSCManager函数打开服务控制管理器,取得SCM句柄,如果返回NULL,则结束,否则继续2.//hSCM2、用OpenService打开相应的服务,如果返回NULL,则结束,否则继续3.hSerVice3、用ControlService停止驱动服务,如果返回NULL,只有重新启动才能,再动态加载。4、用DeleteService动态卸载驱动程序,如果返回NULL,则打印出错调试信息,否则打印成功信息。 阅读全文
posted @ 2013-03-09 14:38 qintangtao 阅读(861) 评论(0) 推荐(0) 编辑

摘要: NT式驱动的安装A、OpenSCManagerB、CreateServiceC、OpenServiceD、StartServiceE、CloseServiceHandleF、集成到loadNTDriver函数#include<winsvc.h>正常加载驱动的步骤如下:1、调用OpenSCManager,打开SCM管理器。如果返回NULL,则返回失败,否则继续下一步;2、调用CreateService创建服务,如果用GetLastError获取的返回值为ERROR_IO_PENDING,说明服务已经创建过,此时用OpenService打开此服务.3、调用StartService开启服 阅读全文
posted @ 2013-03-09 14:23 qintangtao 阅读(1937) 评论(0) 推荐(0) 编辑

2013年3月7日

摘要: 1,打开系统的testsigning模式,使得非权威CA发放的签名可以使用bcdedit /set testsigning on (XP64:在boot.ini里面添加/testsigning)2,做一个签名证书出来。MakeCert –r –pe –ss PrivateCertStore –n CN=tao test.cer3,把证书加进本机信任根CA中去。CertMgr -add test.cer -s -r LocalMachine root4,给驱动签名。Signtool sign /v /s PrivateCertStore /n tao HelloDDK.sys或者直接关闭数字签. 阅读全文
posted @ 2013-03-07 20:17 qintangtao 阅读(602) 评论(0) 推荐(0) 编辑

2013年3月6日

摘要: 一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论。做个备份,以免丢失。C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。请看下面的程序。#include <iostream>;using namespace std; class T {public: T() { cout << " 阅读全文
posted @ 2013-03-06 11:24 qintangtao 阅读(403) 评论(1) 推荐(0) 编辑

摘要: 关于内存对齐一:1.什么是内存对齐假设我们同时声明两个变量:char a;short b;用&(取地址符号)观察变量a,b的地址的话,我们会发现(以16位CPU为例):如果a的地址是0x0000,那么b的地址将会是0x0002或者是0x0004。那么就出现这样一个问题:0x0001这个地址没有被使用,那它干什么去了?答案就是它确实没被使用。因为CPU每次都是从以2字节(16位CPU)或是4字节(32位CPU)的整数倍的内存地址中读进数据的。如果变量b的地址是0x0001的话,那么CPU就需要先从0x0000中读取一个short,取它的高8位放入b的低8位,然后再从0x0002中读取下一 阅读全文
posted @ 2013-03-06 11:14 qintangtao 阅读(25396) 评论(4) 推荐(2) 编辑

上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 31 下一页