Windows 驱动发展基金会(九)内核函数
Windows 驅(qū)動(dòng)發(fā)展基金會(huì)系列,轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.net/ikerpeng/article/details/38849861
這里主要介紹3類(lèi)Windows的內(nèi)核函數(shù):字符串處理函數(shù),文件操作函數(shù), 注冊(cè)表讀寫(xiě)函數(shù)。
(這些函數(shù)都是執(zhí)行時(shí)函數(shù),所以都有Rtl字樣)
1 字符串處理函數(shù)
首先驅(qū)動(dòng)程序中,經(jīng)常使用的字符串包含4種:CHAR (打印的時(shí)候注意小寫(xiě)%s), WCHAR(打印的時(shí)候注意大寫(xiě)%S), ANSI_STRING, UNICODE_STRING。后面兩種使用的比較的多注意他們兩都不是以0標(biāo)志結(jié)束的。
使用前要都要進(jìn)行初始化(就像C里面的變量聲明和賦值)。
都有其對(duì)應(yīng)的初始化函數(shù):
RtlInitAnsiString(),RtlInitUnicodeString()。使用的樣例:
ANSI_STRING ansiString;
CHAR* string = “Hello”;
RtlInitAnsiString(&ansiString, string);
同理我們還有對(duì)應(yīng)的:復(fù)制:RtlCopyString()RtlCopyUnicodeString()比較:RtlCompareUnicodeString()RtlCompareString()轉(zhuǎn)化為大寫(xiě):RtlUpperString()?RtlUpcaseUnicodeString()轉(zhuǎn)化為整型:RtlUnicodeStringtoInteger()整型轉(zhuǎn)化為Unicode?RtlIntegertoUnicodeString()。
詳細(xì)用到的時(shí)候查手冊(cè)就好。
2. 文件操作函數(shù)
文件的操作主要包含:文件的創(chuàng)建,打開(kāi),改動(dòng)。讀。寫(xiě)等的操作。
這個(gè)文件操作的基本公用代碼是:
? ??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;
以上就是對(duì)于函數(shù)要調(diào)用的一些參數(shù)的申明和定義。接下來(lái)就能夠?qū)?chuàng)建的文件進(jìn)行操作勒。
操作的函數(shù)主要有:
文件的創(chuàng)建: ZwCreativeFile()文件屬性設(shè)置:ObjectAttributes()文件的打開(kāi):ZwOpenFile() 文件的信息獲取 ZwSetInformationFile(),改動(dòng)屬性ZwQueryInformationFile()文件的讀 ZwReadFile()文件的寫(xiě)?ZwWriteFile()。
3.注冊(cè)表
注冊(cè)表中存儲(chǔ)的是對(duì)個(gè)的二元結(jié)構(gòu):鍵名--鍵值;同一時(shí)候一個(gè)注冊(cè)表項(xiàng)可能還存在他的子項(xiàng)。
其操作和文件的操作非常像。基本的函數(shù)有ZwCreatKey(),ZwOpenKey(),ZwSetValueKey()(鍵值)ZwQueryValueKey()ZwQueryKey()(鍵名的操作)等等。
本小節(jié)完。
參考文獻(xiàn)
《 Windows 驅(qū)動(dòng)開(kāi)發(fā)技術(shù)詳細(xì)說(shuō)明 》
版權(quán)聲明:本文博主原創(chuàng)文章。博客,未經(jīng)同意不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的Windows 驱动发展基金会(九)内核函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 父子窗口传递数据
- 下一篇: 变更管理、信息系统安全管理、项目风险管理