Windows 驱动发展基金会系列,转载请注明出处:http://blog.csdn.net/ikerpeng/article/details/38849861

这里主要介绍3类Windows的内核函数:字符串处理函数,文件操作函数, 注冊表读写函数。

(这些函数都是执行时函数,所以都有Rtl字样)

1 字符串处理函数

首先驱动程序中,经常使用的字符串包含4种:CHAR (打印的时候注意小写%s), WCHAR(打印的时候注意大写%S), ANSI_STRING,
UNICODE_STRING。后面两种使用的比較的多注意他们两都不是以0标志结束的。

使用前要都要进行初始化(就像C里面的变量声明和赋值)。

都有其对应的初始化函数:

RtlInitAnsiString(),RtlInitUnicodeString()。使用的样例:

ANSI_STRING ansiString;

CHAR* string = “Hello”;

RtlInitAnsiString(&ansiString, string);

同理我们还有对应的:复制:RtlCopyString()RtlCopyUnicodeString()比較:RtlCompareUnicodeString()RtlCompareString()转化为大写:RtlUpperString() RtlUpcaseUnicodeString()转化为整型:RtlUnicodeStringtoInteger()整型转化为Unicode RtlIntegertoUnicodeString()。

详细用到的时候查手冊就好。

2. 文件操作函数

文件的操作主要包含:文件的创建,打开,改动。读。写等的操作。

这个文件操作的基本公用代码是:

UNICODE_STRING string;

RtlInitUnicodeString(&string, L"\\??\\C:\\1.log");

OBJECT_ATTRIBUTES objattr;

InitializeObjectAttributes(&objattr, &string, OBJ_CASE_INSENSITIVE, NULL, NULL);

HANDLE hFile;

IO_STATUS_BLOCK iostatus;

以上就是对于函数要调用的一些參数的申明和定义。接下来就能够对创建的文件进行操作勒。

操作的函数主要有:

文件的创建: ZwCreativeFile()文件属性设置:ObjectAttributes()文件的打开:ZwOpenFile() 文件的信息获取 ZwSetInformationFile(),改动属性ZwQueryInformationFile()文件的读 ZwReadFile()文件的写 ZwWriteFile()。

3.注冊表

注冊表中存储的是对个的二元结构:键名--键值;同一时候一个注冊表项可能还存在他的子项。

其操作和文件的操作非常像。基本的函数有ZwCreatKey(),ZwOpenKey(),ZwSetValueKey()(键值)ZwQueryValueKey()ZwQueryKey()(键名的操作)等等。

本小节完。

參考文献


Windows 驱动开发技术详细说明 》

版权声明:本文博主原创文章。博客,未经同意不得转载。

Windows 驱动发展基金会(九)内核函数的更多相关文章

  1. 《Windows驱动开发技术详解》之分层驱动程序

    分层驱动程序概念 分层的目的是将功能复杂的驱动程序分解成多个简单的驱动程序.一般来说,他们是指两个或两个 以上的驱动程序,它们分别创建设备对象,并且形成一个由高到低的设备对象栈.IRP请求一般会被传送 ...

  2. [windows驱动]内核态驱动架构

    1.windows驱动简介: 1.1 windows组件简介: 1.2 windows驱动类型: windows驱动分为两种基本类型: 用户态驱动在用户态下执行.它们一般提供一套win32应用程序和内 ...

  3. windows:根据特征码查找内核任意函数

    在windows平台做逆向.外挂等,经常需要调用很多未导出的内核函数,怎么方便.快速查找了?可以先用IDA等工具查看硬编码,再根据硬编码定位到需要调用的函数.整个思路大致如下: 1.先查找目标模块   ...

  4. Windows驱动派遣函数的学习

    //派遣处理例程的介绍: //IPR简介: //IRP全称(I/O Request Package),即输入输出请求包.他是windows驱动的重要概念,用户模式下所有对驱动程序的I/O请求,全部由操 ...

  5. Windows内核函数

    字符串处理 在驱动中一般使用的是ANSI字符串和宽字节字符串,在驱动中我们仍然可以使用C中提供的字符串操作函数,但是在DDK中不提倡这样做,由于C函数容易导致缓冲区溢出漏洞,针对字符串的操作它提供了一 ...

  6. C++第三十九篇 -- 研究一下Windows驱动开发(二)-- 驱动程序中重要的数据结构

    数据结构是计算机程序的核心,I/O管理器定义了一些数据结构,这些数据结构是编写驱动程序时所必须掌握的.驱动程序经常要创建和维护这些数据结构的实例. 一.驱动对象(DRIVER_OBJECT) 每个驱动 ...

  7. Windows驱动开发(中间层)

    Windows驱动开发 一.前言 依据<Windows内核安全与驱动开发>及MSDN等网络质料进行学习开发. 二.初步环境 1.下载安装WDK7.1.0(WinDDK\7600.16385 ...

  8. 关于Linux系统调用,内核函数【转】

    转自:http://blog.csdn.net/ubuntulover/article/details/5988220 早上听人说到某个程序的一部分是内核态,另一部分是用户态,需要怎么怎么.当时突然想 ...

  9. (转)Windows驱动编程基础教程

    版权声明     本书是免费电子书. 作者保留一切权利.但在保证本书完整性(包括版权声明.前言.正文内容.后记.以及作者的信息),并不增删.改变其中任何文字内容的前提下,欢迎任何读者 以任何形式(包括 ...

随机推荐

  1. wx_sample.php

    <?php /**   * wechat php test   */ //define your token define("TOKEN", "weixin&quo ...

  2. Fashion Meets Finance聚会来袭-7月19日 北京

    http://mp.weixin.qq.com/mp/appmsg/show?__biz=MjM5NjEzMjMyMQ%3D%3D&appmsgid=10000704&itemidx= ...

  3. hdu 4740【模拟+深搜】.cpp

    题意: 给出老虎的起始点.方向和驴的起始点.方向.. 规定老虎和驴都不会走自己走过的方格,并且当没路走的时候,驴会右转,老虎会左转.. 当转了一次还没路走就会停下来.. 问他们有没有可能在某一格相遇. ...

  4. poj3468(线段树)

    题目连接:http://poj.org/problem?id=3468 线段树功能:update:成段增减 query:区间求和. 分析:需要用到延迟标记(或者说懒惰标记),简单来说就是每次更新的时候 ...

  5. urses.ascii.ispunct(ch):

    Nullege: A Search Engine for Python source code urses.ascii.ispunct(ch): TypeError: 'unicode' object ...

  6. MySQL 全角转换为半角

    ​序言:       用户注冊时候,录入了全角手机号码,所以导致短信系统依据手机字段发送短信失败.如今问题来了,怎样把全角手机号码变成半角手机号码? 1.手机号码全角转换成半角先查询出来全角半角都存在 ...

  7. sql server 行列互转

    1 列转行 测试脚本 ),课程 ),分数 int) ) ) ) ) ) ) go 转化脚本 select 姓名 , end) 语文, end) 数学 , end) 物理 from tb group b ...

  8. hadoop学习;自己定义Input/OutputFormat;类引用mapreduce.mapper;三种模式

    hadoop切割与读取输入文件的方式被定义在InputFormat接口的一个实现中.TextInputFormat是默认的实现,当你想要一次获取一行内容作为输入数据时又没有确定的键.从TextInpu ...

  9. Java开发环境的基本设置

    作为Java的刚開始学习的人,不知道其它的刚開始学习的人有没有和我一样的感受:用Java开发须要配置这么复杂 的环境.太难了.第一次配置时,一团混乱.Oracle监听服务打不开了,PLSql连接不上O ...

  10. JavaEEB2C网上商城前端系统

    问题的提出: 电子商务已经成为人们生活中不可或缺的组成部分,它提供了一种足不出户就可以挑选.购买.使用商品的方式.在众多点上网站中,综合类的B2C电商以其较高的可信度,丰富的商品类目,得到消费者的青睐 ...