Setpagefile.exe源码

Setpagefile.exe的源码
怎么样建立系统服务,怎么样访问注册表,这些东西就不贴了。这些都是简单的东西。我只把创建页面文件的API函数调用贴出来。创建页面文件需要调用一个 API函数,即NtCreatePagingFile。Google一下,看你找不找得到这个函数的调用说明。答案当然是没有。好了,不卖关子了,贴出来,是Pascal语法。

代码
function TSetPageFileService.SetPageFile: Boolean;
var
PageFileName: UNICODE_STRING;
InitialSize,MaximumSize: ULARGE_INTEGER;
Device: 
array [0..1023of Char;
PageFileFullName: 
array [0..1023of WideChar;
begin
Result :
= False;

SetCreatePagefilePrivilege;
QueryDosDevice(PAnsiChar(FSetPageFileToDisk),Device,
1024);
StringToWideChar(Device
+'\pagefile.sys',PageFileFullName,1024);

PageFileName.Length :
= Length(Trim(PageFileFullName))*2;
PageFileName.MaximumLength :
= PageFileName.Length + 2;
PageFileName.Buffer :
= PageFileFullName;
InitialSize.QuadPart :
= FPageFileInitialSize*$100000;
MaximumSize.QuadPart :
= FPageFileMaximumSize*$100000;

Result :
= NtCreatePagingFile(@PageFileName,@InitialSize,@MaximumSize,0= 0 ;
end;




    好啦,代码都贴出来了。是程序员的话,一看就知道是怎么回事了。我就不解释各参数是什么意思了,看变量名就知道是什么了。
    注意一点就是,在调用NtCreatePagingFile之前,需要获得SeCreatePagefilePrivilege权限。
    SetCreatePagefilePrivilege函数就是做这件事情的。自己去写吧,还有NtCreatePagingFile这个函数去哪里调用,自己动动脑吧。如果什么都是伸手即来,那写代码还会有什么乐趣?   

posted @ 2010-01-26 14:56  mier  阅读(659)  评论(0编辑  收藏  举报