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 中 CreateFiledwDesiredAccess 参数。

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 结构:

要求

要求 价值
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
标头 wdfiotarget.h (包括 Wdf.h)

另请参阅

ACCESS_MASK

DEVICE_OBJECT

EvtIoTargetQueryRemove

EvtIoTargetRemoveCanceled

FILE_OBJECT

UNICODE_STRING

WDF_IO_TARGET_OPEN_TYPE

WdfIoTargetOpen

WdfRequestGetFileObject

ZwCreateFile