阅读:4258回复:2
Irp->IoStatus->Information 该填什么
我有一个文件过滤驱动 拦截修改某个文件大小的IRP
代码片断 NTSTATUS SetInformation( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) BOOLEAN IsSetFileSize = (FileEndOfFileInformation == irpSp->Parameters.SetFile.FileInformationClass); if (TRUE == IsSetFileSize) { fileendoffileinfo = *(PFILE_END_OF_FILE_INFORMATION)Irp->AssociatedIrp.SystemBuffer; hashEntry = GetHash(irpSp->FileObject); if (NULL == hashEntry) { return STATUS_UNSUCCESSFUL; } if (NULL == hashEntry->filename) { return STATUS_UNSUCCESSFUL ; } if (0 != wcscmp((WCHAR *)(hashEntry->filename) + 1,L":\\A.TXT")) { return STATUS_UNSUCCESSFUL ; } Irp->IoStatus.Status = STATUS_SUCCESS ; Irp->IoStatus.Information = ? ; //这里应该怎么填 IoCompleteRequest(Irp,IO_NO_INCREMENT); return STATUS_SUCCESS ; } } 我想直接返回成功 根据MSDN The Information member receives the number of bytes set on the file。 因此我的Irp->IoStatus.Information 应该返回 fileendoffileinfo .Endoffile.QuadPart的值 但是类型不匹配啊 一个是ULONG_PTR 一个是LONGLONG 请问一下我这里应该怎么写呢? |
|
沙发#
发布于:2008-11-25 13:26
// Set the information field to the number of bytes actually filled in
Irp->IoStatus.Information = IrpSp->Parameters.QueryFile.Length; 这个大小是指你返回的数据的大小,所以填写 你返回的数据的长度就可以了。 你可以去看看 fastfat的实现 。 |
|
板凳#
发布于:2008-11-26 09:12
Re:Irp->IoStatus->Information  该填什么
不是填这个吧 |
|