WdfFileObjectGetFileName 函数 (wdffileobject.h)

[适用于 KMDF 和 UMDF]

WdfFileObjectGetFileName 方法返回指定框架文件对象包含的文件名。

语法

PUNICODE_STRING WdfFileObjectGetFileName(
  [in] WDFFILEOBJECT FileObject
);

参数

[in] FileObject

框架文件对象的句柄。

返回值

WdfFileObjectGetFileName 返回指向包含文件名的 UNICODE_STRING 结构的指针。 如果指定的框架文件对象没有 WDM 文件对象,或者它在 IRQL 上调用高于 PASSIVE_LEVEL,则该方法返回 NULL

如果驱动程序提供无效的对象句柄,则会发生 bug 检查。

注解

如果驱动程序在调用 WdfDeviceCreateDeviceInterface时指定引用字符串,WdfFileObjectGetFileName 返回反斜杠前面附加的引用字符串。 若要确定引用字符串,请删除反斜杠。

返回的字符串可以包含文件名或引用字符串。 字符串不包含设备名称。 如果应用程序或内核模式组件已打开设备而不是文件,且没有引用字符串,则返回UNICODE_STRING结构的 Length 成员为零。

驱动程序仅在处理文件创建请求时调用 WdfFileObjectGetFileNameWdfRequestTypeCreate 请求类型)。 驱动程序可能会在 EvtDeviceFileCreate 回调函数中处理 WdfRequestTypeCreate类型化 I/O 请求。

或者,驱动程序可以调用 WdfDeviceConfigureRequestDispatching 来设置 I/O 队列以接收所有文件创建请求(WdfRequestTypeCreate 请求类型),而不是提供 EvtDeviceFileCreate 回调函数。 驱动程序随后会在队列的 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)
图书馆 Wdf01000.sys(KMDF):WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
DDI 符合性规则 DriverCreate(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf),KmdfIrqlExplicit(kmdf)

另请参阅

UNICODE_STRING

WdfDeviceCreateDeviceInterface