WdfFileObjectGetFileName 函数 (wdffileobject.h)
[适用于 KMDF 和 UMDF]
WdfFileObjectGetFileName 方法返回指定的框架文件对象包含的文件名。
语法
PUNICODE_STRING WdfFileObjectGetFileName(
[in] WDFFILEOBJECT FileObject
);
参数
[in] FileObject
框架文件对象的句柄。
返回值
WdfFileObjectGetFileName 返回指向包含文件名 的UNICODE_STRING 结构的指针。 如果指定的框架文件对象没有 WDM 文件对象,或者在高于 PASSIVE_LEVEL的 IRQL 上调用它,则该方法将返回 NULL 。
如果驱动程序提供无效的对象句柄,则会发生 bug 检查。
注解
如果驱动程序在调用 WdfDeviceCreateDeviceInterface 时指定了引用字符串, 则 WdfFileObjectGetFileName 将返回由反斜杠前面附加的引用字符串。 若要确定引用字符串,请删除反斜杠。
返回的字符串可以包含文件名或引用字符串。 字符串不包含设备名称。 如果应用程序或内核模式组件打开了设备而不是文件,并且没有引用字符串,则返回的 UNICODE_STRING 结构的 Length 成员为零。
驱动程序应仅在处理文件创建请求 (WdfRequestTypeCreate 请求类型) 时调用 WdfFileObjectGetFileName。 驱动程序可能会在 EvtDeviceFileCreate 回调函数中处理 WdfRequestTypeCreate 类型的 I/O 请求。
或者,驱动程序无需提供 EvtDeviceFileCreate 回调函数,而是可以调用 WdfDeviceConfigureRequestDispatching 来设置 I/O 队列以接收所有文件创建请求 (WdfRequestTypeCreate 请求类型) 。 驱动程序随后将在队列的 EvtIoDefault 请求处理程序中接收文件创建请求。
有关框架文件对象的详细信息,请参阅 框架文件对象。
有关文件名的详细信息,请参阅 控制设备命名空间访问。
有关引用字符串的详细信息,请参阅 IoRegisterDeviceInterface。
示例
下面的代码示例演示 了 EvtDeviceFileCreate 回调 函数如何获取应用程序已打开的文件的名称。
VOID
MyEvtDeviceFileCreate (
IN WDFDEVICE Device,
IN WDFREQUEST Request,
IN WDFFILEOBJECT FileObject
)
{
PUNICODE_STRING fileName;
fileName = WdfFileObjectGetFileName(FileObject);
...
}
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
最低 KMDF 版本 | 1.0 |
最低 UMDF 版本 | 2.0 |
标头 | wdffileobject.h (包括 Wdf.h) |
Library | Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | DriverCreate (kmdf) 、 KmdfIrql (kmdf) 、 KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf) |