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. hdu1876(dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1876 题意:问机器人到达终点的过程中最多有几次完全消耗完能量,消耗完这么多次能量的方式有几种. 分析: ...

  2. HTML5之画布的拖拽/拖放

    <!DOCTYPE HTML> <html> <head> <script type="text/javascript"> func ...

  3. HdU 4046 Panda 段树

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=4046 意甲冠军:到了bw组成的长度为n的字符串(n<=50000).有m次操作(m<=1000 ...

  4. Ubuntu 使用中的问题总结

    1.ibus输入法图标消失 #ibus-daemon -d 2.Ubuntu没有声音 #alsamixer 3.“对不起,ubuntu出现了内部错误” # nano /etc/default/appo ...

  5. mysql自动备份

    #!/bin/bash MyUSER="SET-MYSQL-USER-NAME"     # USERNAME MyPASS="SET-PASSWORD"    ...

  6. OSPF理论总结

    OSPF学习总结一.OSPF协议的报文类型: 1. Hello 报文:主要用来发现.建立和维护邻居关系. 2. DD报文:数据库的描述报文,主要用来两台路由器的数据库同步. 3. LSR报文:链路状态 ...

  7. HTTPDNS成为移动互联网的标配–原因与原理解析(转)

    DNS,作用就是将域名解析成IP.一个DNS查询,先从本地缓存查找,如果没有或者已经过期,就从DNS服务器查询,如果客户端没有主动设置DNS服务器,一般是从服务商DNS服务器上查找.这就出现了不可控. ...

  8. hdu2544(自己实现优先队列)

    hdu2544  dij水题,用来测试自己实现优先队列对不对 #include <stdio.h> #include <string.h> #include <stdli ...

  9. Windows Phone开发(8):关于导航的小技巧

    原文:Windows Phone开发(8):关于导航的小技巧 前文用几个例子对导航做了简单介绍,在一般应用中,使用上一篇文章中说到的方法,其实也够用了,不过,为了能够处理一些特殊的情况,有几个小技巧还 ...

  10. MySQL的create table as 与 like区别(转)

    对于mysql的复制相同表结构方法,有create table as 和create table like 两种,区别是什么呢? create table t2 as select * from t1 ...