阅读:1696回复:7
我的问题为什么没有人回答呢??难道问题真的这么难吗???问题就是怎么在ring0对文件改名。 |
|
|
沙发#
发布于:2001-12-04 15:40
Nt/ZwSetInformationFile函数
|
|
|
板凳#
发布于:2001-12-05 12:54
请告知具体怎么传参数?多谢
|
|
|
地板#
发布于:2001-12-10 21:28
//改名 szFileName1 to szFileName2 NTSTATUS Rename(PCHAR szFileName1,PCHAR szFileName2) { NTSTATUS status; CHAR szFileNameL[MAXPATHLEN]; OBJECT_ATTRIBUTES oa; IO_STATUS_BLOCK iostatus; HANDLE hfile =NULL; UNICODE_STRING pathnameW; ANSI_STRING pathnameA; FILE_RENAME_INFORMATION fri; strcpy(szFileNameL,\"\\\\DosDevices\\\\\"); strcat(szFileNameL,szFileName1); RtlInitAnsiString (&pathnameA,szFileNameL ); RtlAnsiStringToUnicodeString(&pathnameW,&pathnameA,TRUE); InitializeObjectAttributes(&oa, &pathnameW, OBJ_CASE_INSENSITIVE, NULL, NULL); status = ZwCreateFile(&hfile, DELETE, &oa, &iostatus, NULL, 0, FILE_SHARE_READ,FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT, NULL,0); RtlFreeUnicodeString(&pathnameW); if(!NT_SUCCESS(status)) { goto done; } strcpy(szFileNameL,\"\\\\DosDevices\\\\\"); strcat(szFileNameL,szFileName2); RtlInitAnsiString (&pathnameA,szFileNameL ); RtlAnsiStringToUnicodeString(&pathnameW,&pathnameA,TRUE); fri.FileNameLength=pathnameW.Length; memcpy(fri.FileName,pathnameW.Buffer,pathnameW.Length); fri.ReplaceIfExists=0; fri.RootDirectory=0; status = ZwSetInformationFile(hfile,&iostatus,&fri,sizeof(fri),FileDispositionInformation); RtlFreeUnicodeString(&pathnameW); done: if(hfile)ZwClose(hfile); return status; } :D :D :D :D :D |
|
|
地下室#
发布于:2001-12-11 10:03
你程序里的FILE_RENAME_INFORMATION结构是在哪里定义的呢?
我在ntddk.h中怎么没找到呢???还有很多结构的定义也没有,令人费解,请指点,多谢。 |
|
|
5楼#
发布于:2001-12-11 10:16
iamaf~1兄:
FILE_RENAME_INFORMATION 是在哪里定义的??? ntddk.h中为什么没有呢?请明示。 |
|
|
6楼#
发布于:2001-12-11 12:05
in ntifs.h typedef struct _FILE_RENAME_INFORMATION { BOOLEAN ReplaceIfExists; HANDLE RootDirectory; ULONG FileNameLength; WCHAR FileName[1]; } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION; |
|
|
7楼#
发布于:2007-02-01 13:25
我在使用FILE_OPEN,FILE_OVERWRITE的时候,也无法识别
是在哪个头文件中定义的呢。。。。 请大家指点 |
|