Windows 驱动开发基础(九)内核函数
来源:互联网 发布:整体厨房设计软件 编辑:程序博客网 时间:2024/06/05 23:40
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 驱动开发基础(九)内核函数
- windows内核驱动编程基础
- <学习笔记>Windows驱动开发技术详解__Windows内核函数
- Linux内核与驱动开发学习总结:设备驱动模型(九)
- Windows内核驱动开发入门学习资料 + 内核数据类型和函数
- WINDOWS WDM驱动开发基础
- Windows 驱动开发 - 基础1
- Windows 驱动开发 - 基础2
- Windows驱动开发WDM (8)- 内核同步对象
- [Windows驱动开发](五)内核内存管理
- [Windows驱动开发](五)内核内存管理
- Windows内核驱动开发入门学习资料
- Windows内核驱动开发入门学习资料
- Windows内核驱动开发入门学习资料
- Windows内核驱动开发入门学习资料
- Windows内核驱动开发入门学习资料
- Windows内核驱动开发入门学习资料
- Windows内核驱动开发入门学习资料
- VBS基础篇 - 内置函数 - DateDiff 函数
- 云存储需实现虚拟化、集群管理
- Xcode封装.Bundle文件
- Cortana(小娜)那些事儿
- VBS基础篇 - 内置函数 - 其他函数
- Windows 驱动开发基础(九)内核函数
- 正则表达式之grep命令
- MySQL错误2003:Can't connect to MySQL server (10060)
- springMVC中遇到的问题
- Asmack之旅(二)packet扩展
- 求字符串最大的重复字串
- VBS基础篇 - 杂项 - 字符集
- UVA - 1404 Prime k-tuple (素数筛选)
- 如何修改android工程的包名