다음을 통해 공유


IWDFFileHandleTargetFactory::CreateFileHandleTarget 메서드(wudfddi.h)

[경고: UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에는 새로운 기능이 추가되지 않으며 최신 버전의 Windows 10에서는 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다. 자세한 내용은 UMDF시작 .]을 참조하세요.

CreateFileHandleTarget 메서드는 파일 핸들 기반 I/O 대상 개체를 만듭니다.

통사론

HRESULT CreateFileHandleTarget(
  [in]  HANDLE       hTarget,
  [out] IWDFIoTarget **ppTarget
);

매개 변수

[in] hTarget

대상 디바이스에 대한 핸들입니다. 핸들은 이전에 FILE_FLAG_OVERLAPPED 플래그로 열렸어야 합니다. 예를 들어 FILE_FLAG_OVERLAPPED Microsoft Win32 CreateFile 함수의 dwFlagsAndAttributes 매개 변수에 지정되어 있어야 합니다.

[out] ppTarget

I/O 대상 개체의 IWDFIoTarget 인터페이스에 대한 포인터를 수신하는 위치에 대한 포인터입니다.

반환 값

CreateFileHandleTarget 다음 값 중 하나를 반환합니다.

반환 코드 묘사
S_OK

CreateFileHandleTarget 파일 핸들 기반 I/O 대상 개체를 만들었습니다.

E_OUTOFMEMORY

CreateFileHandleTarget 할당 오류가 발생했습니다.

 

CreateFileHandleTarget Winerror.h에 정의된 다른 HRESULT 값도 반환할 수 있습니다.

발언

드라이버가 파일 핸들 기반 I/O 대상을 사용하는 경우 드라이버 INF 파일의 DDInstall.WDF 섹션에서 UmdfDispatcher 지시문을 fileHandle설정해야 합니다. UmdfDispatcher대한 자세한 내용은 WDF 지시문지정을 참조하세요.

드라이버가 파일 핸들 기반 I/O 대상 개체를 만든 후 I/O 요청의 형식을 지정하고 I/O 대상으로 보낼 수 있습니다. 일반적으로 드라이버가 IWDFIoTarget::FormatRequestForRead, IWDFIoTarget::FormatRequestForWrite호출하는 경우 또는IWDFIoTarget::FormatRequestForIoctl드라이버는 pFile 매개 변수를 NULL설정합니다. NULL 인해 프레임워크는 드라이버가 CreateFileHandleTarget지정한 파일 이름을 사용합니다. 드라이버가NULLpFile 매개 변수를 제공하는 경우 지정된 파일은 드라이버가 CreateFileHandleTarget지정한 파일을 바꿉니다. (드라이버는 IWDFIoRequest::FormatUsingCurrentType 호출하여 I/O 요청의 형식을 지정할 수도 있습니다.)

드라이버가 IWDFIoRequest::Send 호출하여 I/O 요청을 I/O 대상으로 보내는 경우 드라이버는 Flags 매개 변수에서 WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET 값을 설정해서는 안됩니다.

드라이버가 CreateFileHandleTarget 전달하는 Win32 핸들은 파일 핸들 기반 I/O 대상 개체의 수명 동안 유효한 상태를 유지해야 합니다. (프레임워크는 이 대상 핸들에 대한 참조를 사용하지 않으므로 드라이버는 Win32 핸들이 유효한지 확인해야 합니다.)

드라이버가 CreateFileHandleTarget 제공하는 IWDFIoTarget 인터페이스를 경우 IWDFIoTarget 인터페이스를 해제해야 합니다.

CreateFileHandleTarget 및 I/O 대상에 대한 자세한 내용은 UMDF일반 I/O 대상 초기화를 참조하세요.

예제

다음 코드 예제에서는 명명된 파이프에 대 한 파일 핸들 기반 I/O 대상을 만드는 방법을 보여 있습니다. 이 예제에서 m_FxDevice IWDFDriver::CreateDevice 제공하는 인터페이스 포인터입니다.

HRESULT hr = S_OK;
CComPtr<IWDFFileHandleTargetFactory> pFileHandleTargetFactory;
//
// Create a pipe and get the handle.
//
m_WriteHandle = CreateNamedPipe(NP_NAME, 
                                PIPE_ACCESS_DUPLEX|FILE_FLAG_OVERLAPPED, 
                                PIPE_TYPE_MESSAGE|PIPE_READMODE_MESSAGE|PIPE_WAIT,
                                2,
                                MAX_TRANSFER_SIZE,
                                MAX_TRANSFER_SIZE,
                                1000,
                                NULL);
if (m_WriteHandle == INVALID_HANDLE_VALUE) {
    DWORD err = GetLastError();
    hr = HRESULT_FROM_WIN32(err);
}
//
// Obtain the IWDFFileHandleTargetFactory interface
// by calling IWDFDevice::QueryInterface. 
//
if (SUCCEEDED(hr)) {
    hr = m_FxDevice->QueryInterface(IID_PPV_ARGS(&pFileHandleTargetFactory));
}
//
// Create a file handle target.
//
if (SUCCEEDED(hr)) {
    hr = pFileHandleTargetFactory->CreateFileHandleTarget(m_WriteHandle,
                                                          &m_WriteTarget);
}

요구 사항

요구
지원 종료 UMDF 2.0 이상에서는 사용할 수 없습니다.
대상 플랫폼 바탕 화면
최소 UMDF 버전 1.5
헤더 wudfddi.h(Wudfusb.h 포함)
DLL WUDFx.dll

참고 항목

IWDFFileHandleTargetFactory

IWDFIoRequest::Send

IWDFIoTarget