UMDF에서 일반 I/O 대상 초기화

경고

UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에 새 기능이 추가되지 않으며 최신 버전의 Windows 10 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다.

보관된 UMDF 1 샘플은 Windows 11 버전 22H2 - 2022년 5월 드라이버 샘플 업데이트에서 찾을 수 있습니다.

자세한 내용은 UMDF를 사용하여 시작 참조하세요.

드라이버가 일반 I/O 대상을 초기화하는 데 사용하는 단계는 I/O 대상이 로컬 인지 원격인지에 따라 달라집니다.

로컬 I/O 대상 초기화

로컬 I/O 대상에는 디바이스의 기본 I/O 대상 및 파일 핸들 기반 I/O 대상이 포함됩니다.

프레임워크는 드라이버가 IWDFDriver::CreateDevice 메서드를 호출할 때 디바이스에 대한 드라이버의 기본 I/O 대상을 초기화합니다. 드라이버가 디바이스의 기본 I/O 대상에 액세스할 수 있도록 하는 IWDFIoTarget 인터페이스를 검색하기 위해 드라이버는 IWDFDevice::GetDefaultIoTarget 메서드를 호출합니다.

대부분의 드라이버는 기본 I/O 대상으로만 요청을 보냅니다.

UMDF 드라이버가 네트워크 소켓 인터페이스와 같은 핸들 기반 인터페이스에 I/O 요청을 보내야 하는 경우 드라이버는 파일 핸들 기반 I/O 대상 개체를 만들어야 합니다. 파일 핸들 기반 I/O 대상 개체를 만들려면 드라이버는 다음을 수행해야 합니다.

  1. 디바이스 IWDFDevice 인터페이스의 QueryInterface 메서드를 호출하여 IWDFFileHandleTargetFactory 인터페이스에 대한 포인터를 검색합니다.

  2. Win32 CreateFile, CreateNamedPipe 또는 소켓 함수를 호출하여 파일, 명명된 파이프 또는 소켓 에 대한 Win32 핸들을 가져옵니다.

  3. IWDFFileHandleTargetFactory::CreateFileHandleTarget 메서드를 호출하여 파일, 파이프 또는 소켓에 대한 파일 핸들 기반 I/O 대상 개체를 만듭니다.

IWDFFileHandleTargetFactory 인터페이스를 검색하고, Win32 핸들을 가져오고, 파일 핸들 기반 I/O 대상 개체를 만드는 방법을 보여 주는 코드 예제는 IWDFFileHandleTargetFactory::CreateFileHandleTarget의 코드 예제를 참조하세요.

드라이버가 파일 핸들 기반 I/O 대상을 만든 후 드라이버는 I/O 대상에 I/O 요청을 보낼 수 있습니다.

원격 I/O 대상 초기화

드라이버가 원격 I/O 대상을 사용하려면 먼저 다음과 같이 원격 대상 개체를 만들고 대상을 열어야 합니다.

  1. IWDFDevice2::CreateRemoteTarget을 호출하여 원격 대상 개체를 만듭니다.

  2. IWDFRemoteTarget::OpenFileByName(파일의 경우) 또는 IWDFRemoteTarget::OpenRemoteInterface(디바이스 인터페이스의 경우)를 호출하여 I/O 작업에 대한 대상을 엽니다.