-1
저는 드라이버 개발의 초보자입니다. 나는 필터 드라이버 (커널 모드)를 개발 중이다. 열려있는 모든 파일의 전체 경로를 가져오고 싶습니다. 파일 개체와 IRP이 있습니다. & pFileObject-> fileName을 사용하여 경로를 표시하고 있습니다. 전체 경로를 표시하지만 드라이브 문자를 표시하지 않습니다. 드라이브 문자을 알려주는 커널 레벨 루틴을 제공하십시오. @sergmat가 볼륨 이름을 가져 IoVolumeDeviceToDosName
루틴을 사용할 수 있습니다 제안으로 아래 코드드라이브 문자가 포함 된 전체 파일 경로
#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);
}
스택 오버플로는 "plz give me teh codez"웹 사이트가 아닙니다. 당신은 당신이 시도한 것을 설명하고, 실제 코드를 보여주고, 어디서 잘못되었는지 설명 할 필요가 있습니다. 문제를 직접 해결하기 위해 노력했다는 것을 증명하면 사람들은 훨씬 더 기꺼이 도울 것입니다. –
코디 지금 내 질문을 편집했습니다. –
코디, 루틴 지정만으로 충분할 것입니다 ... –