阅读:1890回复:1
请问应该怎么使用ZwCreateFile函数?
我在filter driver中调用ZwCreateFile文件以获得文件句柄得到被读写文件的相关信息,可是总是返回错误请问应该怎么调用?先谢了
char Buffer[73]; HANDLE FileHandle; OBJECT_ATTRIBUTES ObjectAttributes; IO_STATUS_BLOCK IoStatusBlock; PIO_STACK_LOCATION pIrpStack; LARGE_INTEGER FileOffset; FILE_BASIC_INFORMATION FileInformation; pIrpStack = IoGetCurrentIrpStackLocation(Irp); ObjectAttributes.Length = sizeof(OBJECT_ATTRIBUTES); ObjectAttributes.ObjectName = &(pIrpStack->FileObject->FileName); ObjectAttributes.RootDirectory = NULL; ObjectAttributes.SecurityDescriptor = NULL; ObjectAttributes.SecurityQualityOfService = NULL; ObjectAttributes.Attributes = OBJ_INHERIT|OBJ_KERNEL_HANDLE; FileOffset.u.LowPart = 1024; FileOffset.u.HighPart = 0; if(STATUS_SUCCESS == ZwCreateFile(&FileHandle, FILE_READ_ATTRIBUTES|FILE_WRITE_ATTRIBUTES, &ObjectAttributes, &IoStatusBlock, &FileOffset, FILE_ATTRIBUTE_NORMAL, 0, FILE_OPEN , FILE_NON_DIRECTORY_FILE|FILE_NO_INTERMEDIATE_BUFFERING, NULL, 0)) { DbgPrint((\"ZwCreateFile Sucess!\\n\")); ZwClose(FileHandle); } else { DbgPrint((\"ZwCreateFile Failed %ud!\\n\"),IoStatusBlock.Information); } |
|
沙发#
发布于:2004-05-25 15:06
IO_STATUS_BLOCK IoStatusBlock;
OBJECT_ATTRIBUTES ObjectAttributes; NTSTATUS status; HANDLE FileHandle; //PUNICODE_STRING pFileName //初始化对象属性 InitializeObjectAttributes ( &ObjectAttributes, pFileName, OBJ_CASE_INSENSITIVE, NULL, NULL ); //打开文件 status = ZwCreateFile ( &FileHandle, GENERIC_READ, &ObjectAttributes, &IoStatusBlock, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ, FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0 ); |
|