다음을 통해 공유


IWDFDriver::CreateWdfMemory 메서드(wudfddi.h)

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

CreateWdfMemory 메서드는 프레임워크 메모리 개체를 만들고 메모리 개체에 대해 지정된 0이 아닌 크기의 데이터 버퍼를 할당합니다.

구문

HRESULT CreateWdfMemory(
  [in]           SIZE_T     BufferSize,
  [in, optional] IUnknown   *pCallbackInterface,
  [in, optional] IWDFObject *pParentObject,
  [out]          IWDFMemory **ppWdfMemory
);

매개 변수

[in] BufferSize

새로 만든 WDF 메모리 개체의 데이터 버퍼에 대해 지정된 0이 아닌 데이터 크기(바이트)입니다.

[in, optional] pCallbackInterface

프레임워크가 드라이버가 새로 만든 메모리 개체에서 구독하는 개체 관련 이벤트 콜백 함수를 확인하는 데 사용하는 IUnknown 인터페이스에 대한 포인터입니다. 이 매개 변수는 선택적 요소입니다. 드라이버에 알림이 필요하지 않은 경우 드라이버가 NULL 을 전달할 수 있습니다. IUnknown 인터페이스는 개체 정리 및 삭제에 사용됩니다. 드라이버가 유효한 포인터를 전달하는 경우 프레임워크는 IObjectCleanup 인터페이스에 대한 IUnknown 인터페이스에서 QueryInterface를 호출합니다. 프레임워크가 드라이버의 IObjectCleanup 인터페이스를 가져오는 경우 프레임워크는 이후에 드라이버의 IObjectCleanup::OnCleanup 메서드를 호출하여 메모리 개체가 정리되었음을 드라이버에 알릴 수 있습니다.

[in, optional] pParentObject

만든 메모리 개체의 부모 개체에 대한 IWDFObject 인터페이스에 대한 포인터입니다. NULL이면 드라이버 개체가 기본 부모가 됩니다.

[out] ppWdfMemory

새로 만든 WDF 메모리 개체에 대한 IWDFMemory 인터페이스에 대한 포인터를 수신하는 버퍼에 대한 포인터입니다.

반환 값

CreateWdfMemory는 작업이 성공하면 S_OK 반환합니다. 그렇지 않으면 이 메서드는 Winerror.h에 정의된 오류 코드 중 하나를 반환합니다.

설명

CreateWdfMemory 메서드는 BufferSize 매개 변수가 지정하는 크기의 버퍼를 할당하고 버퍼를 나타내는 프레임워크 메모리 개체를 만듭니다.

pParentObject 매개 변수에 NULL을 지정하면 드라이버 개체가 새로 만든 메모리 개체의 기본 부모 개체가 됩니다. UMDF 드라이버가 드라이버가 특정 디바이스 개체, 요청 개체 또는 기타 프레임워크 개체와 함께 사용하는 메모리 개체를 만드는 경우 드라이버는 메모리 개체의 부모 개체를 적절하게 설정해야 합니다. 부모 개체가 삭제되면 메모리 개체와 해당 버퍼가 삭제됩니다.

UMDF 드라이버는 IWDFObject::D eleteWdfObject를 호출하여 메모리 개체와 해당 버퍼를 삭제할 수도 있습니다.

UMDF 드라이버는 지정된 크기 버퍼가 0인 메모리 개체를 만들 수 없습니다. 드라이버가 0으로 지정된 크기 버퍼를 사용해야 하는 경우 드라이버는 NULL 메모리 개체를 대신 사용해야 합니다. 예를 들어 드라이버가 읽기 요청에서 0으로 지정된 크기 버퍼를 사용해야 하는 경우 드라이버는 IWDFIoTarget::FormatRequestForRead 메서드에 대한 호출에서 pOutputMemory 매개 변수에 NULL을 전달해야 합니다.

예제

다음 코드 예제에서는 USB 엔드포인트에서 읽은 정보를 저장할 수 있는 메모리 개체를 만드는 방법을 보여 집니다.

HRESULT
CUmdfHidDevice::PrepareReader(
    VOID
    )
{
    CComPtr<IWDFDevice> wdfDevice;
    CComPtr<IWDFDriver> wdfDriver;
    CComPtr<IWDFIoRequest> wdfRequest;

    HRESULT hr;

    GetWdfDevice(&wdfDevice);
    wdfDevice->GetDriver(&wdfDriver);

    // Open the interrupt pipe.
    hr = m_HidInterface->RetrieveUsbPipeObject(
                         USB_HID_INTERRUPT_PIPE_INDEX,
                         &m_InterruptPipe
                         );

    // Allocate a memory object to hold information that 
    // is read from the interrupt pipe. 
    // This memory object will be reused.
    if (SUCCEEDED(hr))
    {
        hr = wdfDriver->CreateWdfMemory(m_ReadBufferSize,
                                        NULL,
                                        wdfDevice,
                                        &m_ReadMemory);
    }

    return hr;
}

요구 사항

요구 사항
지원 종료 UMDF 2.0 이상에서는 사용할 수 없습니다.
대상 플랫폼 데스크톱
최소 UMDF 버전 1.5
머리글 wudfddi.h(Wudfddi.h 포함)
DLL WUDFx.dll

추가 정보

IObjectCleanup

IObjectCleanup::OnCleanup

IWDFDriver

IWDFIoTarget::FormatRequestForRead

IWDFMemory

IWDFObject

IWDFObject::D eleteWdfObject