如何将文件名传递给内核模式驱动程序?
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 文件名参数。
我想从已经打开的文件中读取。有一些可用的示例,例如 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 文件名参数。