WDF_IO_TARGET_OPEN_PARAMS结构 (wdfiotarget.h)
[适用于 KMDF 和 UMDF]
WDF_IO_TARGET_OPEN_PARAMS 结构包含 WdfIoTargetOpen 方法使用的参数。
语法
typedef struct _WDF_IO_TARGET_OPEN_PARAMS {
ULONG Size;
WDF_IO_TARGET_OPEN_TYPE Type;
PFN_WDF_IO_TARGET_QUERY_REMOVE EvtIoTargetQueryRemove;
PFN_WDF_IO_TARGET_REMOVE_CANCELED EvtIoTargetRemoveCanceled;
PFN_WDF_IO_TARGET_REMOVE_COMPLETE EvtIoTargetRemoveComplete;
PDEVICE_OBJECT TargetDeviceObject;
PFILE_OBJECT TargetFileObject;
UNICODE_STRING TargetDeviceName;
ACCESS_MASK DesiredAccess;
ULONG ShareAccess;
ULONG FileAttributes;
ULONG CreateDisposition;
ULONG CreateOptions;
PVOID EaBuffer;
ULONG EaBufferLength;
PLONGLONG AllocationSize;
ULONG FileInformation;
UNICODE_STRING FileName;
} WDF_IO_TARGET_OPEN_PARAMS, *PWDF_IO_TARGET_OPEN_PARAMS;
成员
Size
此结构的大小(以字节为单位)。
Type
WDF_IO_TARGET_OPEN_TYPE类型化值,指示 WdfIoTargetOpen 将执行的打开作的类型。
EvtIoTargetQueryRemove
指向驱动程序 EvtIoTargetQueryRemove 事件回调函数的指针,或 NULL。
EvtIoTargetRemoveCanceled
指向驱动程序的 EvtIoTargetRemoveCanceled 事件回调函数的指针,或 NULL。
EvtIoTargetRemoveComplete
指向驱动程序 EvtIoTargetRemoveComplete 事件回调函数的指针,或 NULL。
TargetDeviceObject
此成员不适用于 UMDF 驱动程序。
KMDF 如果 类型 的值 WdfIoTargetOpenUseExistingDevice,则这是指向表示 I/O 目标的设备的 DEVICE_OBJECT 结构的指针。 如果 类型 的值未 WdfIoTargetOpenUseExistingDevice,则忽略此成员。
TargetFileObject
此成员不适用于 UMDF 驱动程序。
KMDF 如果 类型 的值 WdfIoTargetOpenUseExistingDevice,则这是指向 FILE_OBJECT 结构的指针。 此结构包含在驱动程序发送到 I/O 目标的所有 I/O 请求中(请参阅 WdfRequestGetFileObject)。 此成员是可选的,可以 NULL。 如果 类型 的值未 WdfIoTargetOpenUseExistingDevice,则忽略此成员。
TargetDeviceName
如果 类型 的值 WdfIoTargetOpenByName,则这是包含设备、文件或设备接口名称的 UNICODE_STRING 结构。 有关此名称的格式的信息,请参阅 对象名称。
如果 类型 的值未 WdfIoTargetOpenByName,则忽略此成员。
DesiredAccess
如果 类型 的值 WdfIoTargetOpenByName,则这是一个 ACCESS_MASK 值。
如果 类型 的值未 WdfIoTargetOpenByName,则忽略此成员。
KMDF 可能的值包括FILE_Xxxx_ACCESS 值,例如FILE_ANY_ACCESS、FILE_SPECIAL_ACCESS、FILE_READ_ACCESS或FILE_WRITE_ACCESS,以及GENERIC_READ、GENERIC_WRITE和GENERIC_ALL。
UMDF 最常用的值是GENERIC_READ、GENERIC_WRITE或两者(GENERIC_READ |GENERIC_WRITE)。 请注意,ACCESS_MASK 是 DWORD 值。 有关此成员的详细信息,请参阅 Windows SDK 中 CreateFile 的 dwDesiredAccess 参数。
ShareAccess
如果 类型 的值未 WdfIoTargetOpenByName,则忽略此成员。
KMDF 如果 类型 的值 WdfIoTargetOpenByName,则这是以下标志(Wdm.h中定义)或零的按位 OR。
ShareAccess 标志 | 含义 |
---|---|
FILE_SHARE_READ | 驱动程序不需要对设备进行独占读取访问。 |
FILE_SHARE_WRITE | 驱动程序不需要对设备进行独占写入访问。 |
FILE_SHARE_DELETE | 驱动程序不需要对设备进行独占删除访问。 |
UMDF 有关此成员的详细信息,请参阅 Windows SDK 中 CreateFile 函数的 dwShareMode 参数。
ShareAccess 中的值为零,表示驱动程序需要对设备进行独占访问。
FileAttributes
KMDF 如果 类型 的值 WdfIoTargetOpenByName,则这是 Wdm.h中定义的FILE_ATTRIBUTE_Xxxx 标志的按位 OR。 大多数驱动程序指定FILE_ATTRIBUTE_NORMAL。 有关这些标志的详细信息,请参阅 ZwCreateFile。
UMDF 有关此成员的详细信息,请参阅 Windows SDK 中 CreateFile 函数的 dwFlagsAndAttributes 参数。
如果 类型 的值未 WdfIoTargetOpenByName,则忽略此成员。
CreateDisposition
KMDF 如果 类型 的值 WdfIoTargetOpenByName,则此值指示打开文件时系统要执行的作。 有关可能值的列表,请参阅 ZwCreateFile。
UMDF 有关此成员的详细信息,请参阅 Windows SDK 中 CreateFile 函数的 dwCreationDisposition 参数。
如果 类型 的值未 WdfIoTargetOpenByName,则忽略此成员。
CreateOptions
此成员不适用于 UMDF 驱动程序。
KMDF 如果 类型 的值 WdfIoTargetOpenByName,则这是文件选项标志的按位 OR。 有关可能标志的列表,请参阅 ZwCreateFile。 如果 类型 的值未 WdfIoTargetOpenByName,则忽略此成员。
EaBuffer
此成员不适用于 UMDF 驱动程序。
KMDF 如果 类型 的值 WdfIoTargetOpenByName,则此成员指向扩展属性缓冲区。 通常,驱动程序为此值提供 NULL。 如果 类型 的值未 WdfIoTargetOpenByName,则忽略此成员。
EaBufferLength
此成员不适用于 UMDF 驱动程序。
KMDF 如果 类型 的值 WdfIoTargetOpenByName,则这是扩展属性缓冲区的长度。 通常,驱动程序为此值提供零。 如果 类型 的值未 WdfIoTargetOpenByName,则忽略此成员。
AllocationSize
此成员不适用于 UMDF 驱动程序。
KMDF 如果 类型 的值 WdfIoTargetOpenByName,则此成员指定系统在创建新文件时应最初为文件分配的大小(以字节为单位)。 此值是可选的,可以为零。 如果 类型 的值未 WdfIoTargetOpenByName,则忽略此成员。
FileInformation
此成员不适用于 UMDF 驱动程序。
KMDF 如果 类型 的值 WdfIoTargetOpenByName,则调用 WdfIoTargetOpen 时,此成员会收到状态信息。 信息是以下值之一:FILE_CREATED、FILE_OPENED、FILE_OVERWRITTEN、FILE_SUPERSEDED、FILE_EXISTS或FILE_DOES_NOT_EXIST。 如果 类型 的值未 WdfIoTargetOpenByName,则忽略此成员。
FileName
此成员不适用于 KMDF 驱动程序。
UMDF 包含从中创建文件对象的文件名的UNICODE_STRING结构。 此成员是可选的,仅当 类型 的值 WdfIoTargetOpenLocalTargetByFile时才适用。 大多数驱动程序在此处指定 NULL,除非较低目标支持 设备命名空间访问。 如果提供,字符串不得包含任何路径分隔符(正斜杠或反斜杠)。
注解
驱动程序应通过调用以下函数之一来初始化 WDF_IO_TARGET_OPEN_PARAMS 结构:
-
WDF_IO_TARGET_OPEN_PARAMS_INIT_EXISTING_DEVICE,如果驱动程序可以通过提供指向 DEVICE_OBJECT 结构的指针来标识目标设备。
-
WDF_IO_TARGET_OPEN_PARAMS_INIT_CREATE_BY_NAME,如果 I/O 目标是设备、文件或设备接口,并且驱动程序可以提供设备、文件或设备接口的名称。 如果指定已存在的文件的名称,系统将替换现有文件。 如果文件不存在,系统会创建该文件。
-
WDF_IO_TARGET_OPEN_PARAMS_INIT_OPEN_BY_NAME,如果 I/O 目标是设备、文件或设备接口,并且驱动程序可以提供设备、文件或设备接口的名称。 如果指定已存在的文件的名称,系统将打开现有文件。 如果文件不存在,则打开的作将失败。
-
WDF_IO_TARGET_OPEN_PARAMS_INIT_REOPEN,如果驱动程序的 EvtIoTargetRemoveCanceled 回调函数正在重新打开远程 I/O 目标,因为设备未删除。
-
WDF_IO_TARGET_OPEN_PARAMS_INIT_OPEN_BY_FILE,如果 UMDF 驱动程序需要将驱动程序创建的请求发送到需要关联文件对象的较低目标。
要求
要求 | 价值 |
---|---|
最低 KMDF 版本 | 1.0 |
最低 UMDF 版本 | 2.0 |
标头 | wdfiotarget.h (包括 Wdf.h) |