標籤:驅動開發 windows 7
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 驅動開發基礎(九)核心功能