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

WdfIoTargetOpen이 수행할 열린 작업의 형식을 나타내는 WDF_IO_TARGET_OPEN_TYPE 형식의 값입니다.

EvtIoTargetQueryRemove

드라이버의 EvtIoTargetQueryRemove 이벤트 콜백 함수 또는 NULL에 대한 포인터입니다.

EvtIoTargetRemoveCanceled

드라이버의 EvtIoTargetRemoveCanceled 이벤트 콜백 함수 또는 NULL에 대한 포인터입니다.

EvtIoTargetRemoveComplete

드라이버의 EvtIoTargetRemoveComplete 이벤트 콜백 함수 또는 NULL에 대한 포인터입니다.

TargetDeviceObject

이 멤버는 UMDF 드라이버에 적용되지 않습니다.

Kmdf Type 값이 WdfIoTargetOpenUseExistingDevice이면 I/O 대상의 디바이스를 나타내는 DEVICE_OBJECT 구조체에 대한 포인터입니다. Type 값이 WdfIoTargetOpenUseExistingDevice가 아닌 경우 이 멤버는 무시됩니다.

TargetFileObject

이 멤버는 UMDF 드라이버에 적용되지 않습니다.

Kmdf Type 값이 WdfIoTargetOpenUseExistingDevice이면 FILE_OBJECT 구조체에 대한 포인터입니다. 이 구조는 드라이버가 I/O 대상으로 보내는 모든 I/O 요청에 포함됩니다( WdfRequestGetFileObject 참조). 이 멤버는 선택 사항이며 NULL일 수 있습니다. Type 값이 WdfIoTargetOpenUseExistingDevice가 아닌 경우 이 멤버는 무시됩니다.

TargetDeviceName

Type 값이 WdfIoTargetOpenByName인 경우 디바이스, 파일 또는 디바이스 인터페이스의 이름을 포함하는 UNICODE_STRING 구조체입니다. 이 이름의 형식에 대한 자세한 내용은 개체 이름을 참조하세요.

Type 값이 WdfIoTargetOpenByName이 아니면 이 멤버는 무시됩니다.

DesiredAccess

Type 값이 WdfIoTargetOpenByName이면 ACCESS_MASK 값입니다.

Type 값이 WdfIoTargetOpenByName이 아니면 이 멤버는 무시됩니다.

Kmdf 가능한 값에는 FILE_ANY_ACCESS, FILE_SPECIAL_ACCESS, FILE_READ_ACCESS 또는 FILE_WRITE_ACCESS 같은 FILE_Xxxx_ACCESS 값과 GENERIC_READ, GENERIC_WRITE, GENERIC_ALL 등이 있습니다.

Umdf 가장 일반적으로 사용되는 값은 GENERIC_READ, GENERIC_WRITE 또는 둘 다입니다(GENERIC_READ | GENERIC_WRITE). ACCESS_MASK DWORD 값입니다. 이 멤버에 대한 자세한 내용은 Windows SDK에서 CreateFiledwDesiredAccess 매개 변수를 참조하세요.

ShareAccess

Type 값이 WdfIoTargetOpenByName이 아니면 이 멤버는 무시됩니다.

Kmdf Type 값이 WdfIoTargetOpenByName인 경우 다음 플래그(Wdm.h에 정의됨)의 비트 OR 또는 0입니다.

ShareAccess 플래그 의미
FILE_SHARE_READ 드라이버는 디바이스에 대한 단독 읽기 권한이 필요하지 않습니다.
FILE_SHARE_WRITE 드라이버는 디바이스에 대한 단독 쓰기 액세스 권한이 필요하지 않습니다.
FILE_SHARE_DELETE 드라이버는 디바이스에 대한 단독 삭제 액세스 권한이 필요하지 않습니다.
 

Umdf 이 멤버에 대한 자세한 내용은 Windows SDK에서 CreateFile 함수의 dwShareMode 매개 변수를 참조하세요.

ShareAccess의 값이 0이면 드라이버에서 디바이스에 대한 단독 액세스 권한이 필요했음을 나타냅니다.

FileAttributes

Kmdf Type 값이 WdfIoTargetOpenByName인 경우 Wdm.h에 정의된 FILE_ATTRIBUTE_Xxxx 플래그의 비트 OR입니다. 대부분의 드라이버는 FILE_ATTRIBUTE_NORMAL 지정합니다. 이러한 플래그에 대한 자세한 내용은 ZwCreateFile을 참조하세요.

Umdf 이 멤버에 대한 자세한 내용은 Windows SDK에서 CreateFile 함수의 dwFlagsAndAttributes 매개 변수를 참조하세요.

Type 값이 WdfIoTargetOpenByName이 아니면 이 멤버는 무시됩니다.

CreateDisposition

Kmdf Type 값이 WdfIoTargetOpenByName인 경우 이 값은 파일을 열 때 시스템에서 수행할 작업을 나타냅니다. 가능한 값 목록은 ZwCreateFile을 참조하세요.

Umdf 이 멤버에 대한 자세한 내용은 Windows SDK에서 CreateFile 함수의 dwCreationDisposition 매개 변수를 참조하세요.

Type 값이 WdfIoTargetOpenByName이 아니면 이 멤버는 무시됩니다.

CreateOptions

이 멤버는 UMDF 드라이버에 적용되지 않습니다.

Kmdf Type 값이 WdfIoTargetOpenByName이면 파일 옵션 플래그의 비트 OR입니다. 가능한 플래그 목록은 ZwCreateFile을 참조하세요. Type 값이 WdfIoTargetOpenByName이 아니면 이 멤버는 무시됩니다.

EaBuffer

이 멤버는 UMDF 드라이버에 적용되지 않습니다.

Kmdf Type 값이 WdfIoTargetOpenByName인 경우 이 멤버는 확장 특성 버퍼를 가리킵니다. 일반적으로 드라이버는 이 값에 대해 NULL 을 공급합니다. Type 값이 WdfIoTargetOpenByName이 아니면 이 멤버는 무시됩니다.

EaBufferLength

이 멤버는 UMDF 드라이버에 적용되지 않습니다.

Kmdf Type 값이 WdfIoTargetOpenByName인 경우 확장 특성 버퍼의 길이입니다. 일반적으로 드라이버는 이 값에 대해 0을 공급합니다. Type 값이 WdfIoTargetOpenByName이 아니면 이 멤버는 무시됩니다.

AllocationSize

이 멤버는 UMDF 드라이버에 적용되지 않습니다.

Kmdf Type 값이 WdfIoTargetOpenByName인 경우 이 멤버는 새 파일을 만드는 경우 시스템에서 처음에 파일에 할당해야 하는 크기(바이트)를 지정합니다. 이 값은 선택 사항이며 0일 수 있습니다. 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 구조를 초기화해야 합니다.

  • 드라이버가 DEVICE_OBJECT 구조에 대한 포인터를 제공하여 대상 디바이스를 식별할 수 있는 경우 WDF_IO_TARGET_OPEN_PARAMS_INIT_EXISTING_DEVICE .

  • 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 포함)

추가 정보

ACCESS_MASK

DEVICE_OBJECT

EvtIoTargetQueryRemove

EvtIoTargetRemoveCanceled

FILE_OBJECT

UNICODE_STRING

WDF_IO_TARGET_OPEN_TYPE

WdfIoTargetOpen

WdfRequestGetFileObject

ZwCreateFile