如何将文件名传递给内核模式驱动程序?

How to pass file name to kernel mode driver?

我想从已经打开的文件中读取。有一些可用的示例,例如 windows 驱动程序示例中的 general/ioctl 或 How to open a file from a kernel mode device driver and how to read from or write to the file,但首先传递在用户模式应用程序中打开的文件的文件句柄(我显然无法打开其他应用程序打开的文件,因为共享违规错误和句柄为空),第二个显示没有函数参数的代码示例(我猜是 EvtDeviceFileCreate(IN WDFDEVICE Device, IN WDFREQUEST Request, IN WDFFILEOBJECT FileObject) 函数)。我应该在哪里以及如何传递文件名来处理文件?我想打开它并通过偏移量加上块长度来读取它。

不知何故,

中的 DEVICE_NAME 对我来说并不明显
hDevice = CreateFileW(DEVICE_NAME,
  GENERIC_READ,   
  0,              
  NULL,           
  OPEN_EXISTING,  
  FILE_ATTRIBUTE_NORMAL, 
  NULL            
);

其中

#define DEVICE_NAME       L"\\.\MYDRIVERNAME\PathFileName"

实际上是调用驱动程序的 EvtDeviceFileCreate 函数和

fileName = WdfFileObjectGetFileName(FileObject);

returns 文件名参数。