Поделиться через


структура 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 Если значением Type является WdfIoTargetOpenUseExistingDevice, это указатель на структуру DEVICE_OBJECT , представляющую устройство целевого объекта ввода-вывода. Если значение Type не равно WdfIoTargetOpenUseExistingDevice, этот элемент игнорируется.

TargetFileObject

Этот элемент не применяется к драйверам UMDF.

KMDF Если значение TypeWdfIoTargetOpenUseExistingDevice, это указатель на структуру FILE_OBJECT . Эта структура включается во все запросы ввода-вывода, которые драйвер отправляет в целевой объект ввода-вывода (см . WdfRequestGetFileObject). Этот элемент является необязательным и может иметь значение NULL. Если значение Type не равно WdfIoTargetOpenUseExistingDevice, этот элемент игнорируется.

TargetDeviceName

Если параметр Type имеет значение WdfIoTargetOpenByName, это UNICODE_STRING структура, содержащая имя устройства, файла или интерфейса устройства. Сведения о формате этого имени см. в разделе Имена объектов.

Если значение Type не равно WdfIoTargetOpenByName, этот элемент игнорируется.

DesiredAccess

Если параметр Type имеет значение WdfIoTargetOpenByName, это значение ACCESS_MASK .

Если значение Type не равно 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. Дополнительные сведения об этом элементе см. в параметре dwDesiredAccessэлемента CreateFile в windows SDK.

ShareAccess

Если значение Type не равно WdfIoTargetOpenByName, этот элемент игнорируется.

KMDF Если значением Type является WdfIoTargetOpenByName, это побитовое ИЛИ следующих флагов (которые определены в Wdm.h) или ноль.

Флаг ShareAccess Значение
FILE_SHARE_READ Драйверу не требуется монопольный доступ на чтение устройства.
FILE_SHARE_WRITE Драйверу не требуется монопольный доступ на запись к устройству.
FILE_SHARE_DELETE Драйверу не требуется монопольный доступ к удалению устройства.
 

UMDF Дополнительные сведения об этом элементе см. в параметре dwShareMode функции CreateFile в windows SDK.

Значение, равное нулю в ShareAccess , указывает, что драйверу требуется монопольный доступ к устройству.

FileAttributes

KMDF Если значением Type является WdfIoTargetOpenByName, это побитовое ИЛИ флагов FILE_ATTRIBUTE_Xxxx, определенных в Wdm.h. Большинство драйверов указывают FILE_ATTRIBUTE_NORMAL. Дополнительные сведения об этих флагах см. в разделе ZwCreateFile.

UMDF Дополнительные сведения об этом элементе см. в параметре dwFlagsAndAttributes функции CreateFile в windows SDK.

Если значение Type не равно WdfIoTargetOpenByName, этот элемент игнорируется.

CreateDisposition

KMDF Если параметр Type имеет значение WdfIoTargetOpenByName, это значение указывает на действие, которое система будет выполнять при открытии файла. Список возможных значений см. в разделе ZwCreateFile.

UMDF Дополнительные сведения об этом элементе см. в параметре dwCreationDisposition функции CreateFile в windows SDK.

Если значение Type не равно WdfIoTargetOpenByName, этот элемент игнорируется.

CreateOptions

Этот элемент не применяется к драйверам UMDF.

KMDF Если значение Type равно WdfIoTargetOpenByName, это побитовое ИЛИ флагов параметров файла. Список возможных флагов см. в разделе ZwCreateFile. Если значение Type не равно WdfIoTargetOpenByName, этот элемент игнорируется.

EaBuffer

Этот элемент не применяется к драйверам UMDF.

KMDF Если значением Type является WdfIoTargetOpenByName, этот элемент указывает на буфер расширенных атрибутов. Как правило, драйверы предоставляют значение NULL для этого значения. Если значение Type не равно WdfIoTargetOpenByName, этот элемент игнорируется.

EaBufferLength

Этот элемент не применяется к драйверам UMDF.

KMDF Если значение Type равно WdfIoTargetOpenByName, это длина буфера расширенных атрибутов. Как правило, драйверы предоставляют ноль для этого значения. Если значение Type не равно WdfIoTargetOpenByName, этот элемент игнорируется.

AllocationSize

Этот элемент не применяется к драйверам UMDF.

KMDF Если для параметра Type задано значение WdfIoTargetOpenByName, этот элемент указывает размер в байтах, который система должна изначально выделить для файла, если создается новый файл. Это значение является необязательным и может быть равно нулю. Если значение Type не равно WdfIoTargetOpenByName, этот элемент игнорируется.

FileInformation

Этот элемент не применяется к драйверам UMDF.

KMDF Если значение Type равно WdfIoTargetOpenByName, этот член получает сведения о состоянии при возврате вызова WdfIoTargetOpen . Эти сведения содержат одно из следующих значений: FILE_CREATED, FILE_OPENED, FILE_OVERWRITTEN, FILE_SUPERSEDED, FILE_EXISTS или FILE_DOES_NOT_EXIST. Если значение Type не равно WdfIoTargetOpenByName, этот элемент игнорируется.

FileName

Этот элемент не применяется к драйверам KMDF.

UMDF Структура UNICODE_STRING, содержащая имя файла, из которого создается объект файла. Этот элемент является необязательным и применяется только в том случае, если для параметра Type задано значение 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, если целевой объект ввода-вывода является интерфейсом устройства, файла или устройства, а драйвер может указать имя устройства, файла или интерфейса устройства. Если указать имя уже существующего файла, система заменит существующий файл. Если файл не существует, система создает его.

  • WDF_IO_TARGET_OPEN_PARAMS_INIT_OPEN_BY_NAME, является ли целевой объект ввода-вывода устройством, файлом или интерфейсом устройства и может ли драйвер указать имя устройства, файла или интерфейса устройства. Если указать имя уже существующего файла, система откроет существующий файл. Если файл не существует, операция открытия завершается ошибкой.

  • WDF_IO_TARGET_OPEN_PARAMS_INIT_REOPEN, если функция обратного вызова EvtIoTargetRemoveCanceled драйвера открывает удаленный целевой объект ввода-вывода, так как устройство не было удалено.

  • WDF_IO_TARGET_OPEN_PARAMS_INIT_OPEN_BY_FILE, если драйверу UMDF необходимо отправлять запросы, созданные драйвером, в более низкие целевые объекты, для которых требуется связанный файловый объект.

Требования

Требование Значение
Минимальная версия 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