私はドライバー開発の初心者です。フィルター ドライバー (カーネル モード) を開発しています。開いているすべてのファイルのフルパスを取得したい。ファイル オブジェクトと IRPがあります。&pFileObject->fileNameを使用してパスを表示しています。完全なパスが表示されますが、ドライブ文字は表示されません。ドライブ文字を伝えるカーネルレベルのルーチンを提供してください。以下はコードです
#include "StdAfx.h"
#include "drv_common.h"
#include "ntddk.h"
#include "FsFilter.h"
/////////////////////////////////////////////////////////////////////////////////////////// ////////
// PassThrough IRP Handler
NTSTATUS FsFilterDispatchPassThrough( __in PDEVICE_OBJECT DeviceObject, __in PIRP Irp )
{
PFSFILTER_DEVICE_EXTENSION pDevExt = (PFSFILTER_DEVICE_EXTENSION)DeviceObject- >DeviceExtension;
IoSkipCurrentIrpStackLocation(Irp);
return IoCallDriver(pDevExt->AttachedToDeviceObject, Irp);
}
/////////////////////////////////////////////////////////////////////////////////////////// ////////
// IRP_MJ_CREATE IRP Handler
NTSTATUS FsFilterDispatchCreate(
__in PDEVICE_OBJECT DeviceObject,
__in PIRP Irp
)
{
PFILE_OBJECT pFileObject = IoGetCurrentIrpStackLocation(Irp)->FileObject;
DbgPrint("%wZ\n", &pFileObject->FileName);
return FsFilterDispatchPassThrough(DeviceObject, Irp);
}