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에 지정한 파일 이름을 프레임워크에서 사용합니다. 드라이버가 NULL이 아닌 pFile 매개 변수를 제공하는 경우 지정된 파일은 드라이버가 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_FxDeviceIWDFDriver::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