淺談 “驅動中的檔案操作”

來源:互聯網
上載者:User

對於檔案操作:

我們的步驟應該是

 1:---------------開啟我們指定的檔案(大部分是通過檔案名稱的得到這個檔案的操作控制代碼),可以使用 ZwOpenFile, ZwCreateFile....

當然,建立只能用第二個。。。

 

這是一個開啟已知檔案的例子:

NTSTATUS status;

OBJECT_ATTRIBUTES oa;

IO_STATUS_BLOCK iostatus;

HANDLE hfile;                                 //    the output from this process

PUNICODE_STRING pathname;    //    you've been given this
 
InitializeObjectAttributes(&oa, pathname, OBJ_CASE_INSENSITIVE, NULL, NULL);

status = ZwCreateFile(&hfile,
                GENERIC_READ,
                &oa,
                &iostatus,
                NULL,
                0,
                FILE_SHARE_READ,
                FILE_OPEN,
                FILE_SYNCHRONOUS_IO_NONALERT,
                NULL,
                0);

 

建立或重寫檔案
為了建立一個新檔案,或開啟一個已存在檔案並截為 0 長度,用下面方式調用 ZwCreateFile 函數:
status = ZwCreateFile(&hfile,
                GENERIC_WRITE,
                &oa,
                &iostatus,
                NULL,
                FILE_ATTRIBUTE_NORMAL,
                0,
                FILE_OVERWRITE_IF,
                FILE_SYNCHRONOUS_IO_NONALERT,
                NULL,
                0);

 

2:---------------拿到我們想要的檔案控制代碼後,我們將要對這個檔案進行處理了,read 還是 write ,wdk 給我們提供了ZwReadFile 和

ZwWriteFile 這兩個函數

 

讀寫的例子:

PVOID buffer;
ULONG bufsize;
status = ZwReadFile(hfile, NULL, NULL, NULL, &iostatus, buffer, bufsize, NULL, NULL); 
 
status = ZwWriteFile(hfile, NULL, NULL, NULL, &iostatus, buffer, bufsize, NULL, NULL);

 

3:如果要對整個檔案的內容進行讀取:

那麼我們應該首Crowdsourced Security Testing道這個檔案的大小,然後在指定要讀取這個檔案的大小。。。

擷取整個檔案的大小:

FILE_STANDARD_INFORMATION si;

ZwQueryInformationFile(hfile, &iostatus, &si, sizeof(si), FileStandardInformation);

ULONG length = si.EndOfFile.LowPart;

 

 

4:當操作完後,我們應該關閉檔案的控制代碼,不然,下次不能對這個檔案進行其他的操作了。。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.