IWDFDriver::CreatePreallocatedWdfMemory 메서드(wudfddi.h)
[경고: UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에는 새로운 기능이 추가되지 않으며 최신 버전의 Windows 10에서는 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다. 자세한 내용은 UMDF시작 .]을 참조하세요.
CreatePreallocatedWdfMemory 메서드는 지정된 버퍼에 대한 프레임워크 메모리 개체 만듭니다.
통사론
HRESULT CreatePreallocatedWdfMemory(
[in] BYTE *pBuff,
[in] SIZE_T BufferSize,
[in, optional] IUnknown *pCallbackInterface,
[in, optional] IWDFObject *pParentObject,
[out] IWDFMemory **ppWdfMemory
);
매개 변수
[in] pBuff
메모리 개체에 대한 드라이버 제공 데이터 버퍼에 대한 포인터입니다.
[in] BufferSize
pBuff가 가리키는 데이터의 크기(바이트).
[in, optional] pCallbackInterface
프레임워크에서 드라이버가 새로 만든 메모리 개체에서 구독하는 개체 관련 이벤트 콜백 함수를 결정하는 데 사용하는 IUnknown 인터페이스에 대한 포인터입니다. 이 매개 변수는 선택 사항입니다. 드라이버에 알림이 필요하지 않은 경우 드라이버는 NULL 전달할 수 있습니다. IUnknown 인터페이스는 개체 정리 및 삭제에 사용됩니다. 드라이버가 유효한 포인터를 전달하는 경우 프레임워크는 IObjectCleanup 인터페이스의 IUnknown 인터페이스에서 QueryInterface 호출합니다. 프레임워크가 드라이버의 IObjectCleanup 인터페이스를 가져오는 경우 프레임워크는 이후에 드라이버의 IObjectCleanup::OnCleanup 메서드를 호출하여 메모리 개체가 정리되었음을 드라이버에 알릴 수 있습니다.
[in, optional] pParentObject
만든 메모리 개체의 부모 개체에 대한 IWDFObject 인터페이스에 대한 포인터입니다. NULL 경우 드라이버 개체가 기본 부모가 됩니다.
[out] ppWdfMemory
새로 만든 WDF 메모리 개체에 대한 IWDFMemory 인터페이스에 대한 포인터를 수신하는 버퍼에 대한 포인터입니다.
반환 값
CreatePreallocatedWdfMemory 작업이 성공하면 S_OK 반환합니다. 그렇지 않으면 이 메서드는 Winerror.h에 정의된 오류 코드 중 하나를 반환합니다.
발언
CreatePreallocatedWdfMemory 메서드는 드라이버가 이전에 할당하거나 가져온 버퍼에 대한 프레임워크 메모리 개체를 만듭니다.
UMDF 드라이버는 기존 메모리 버퍼를 나타내는 메모리 개체를 만들어야 하는 경우 CreatePreallocatedWdfMemory 호출할 수 있습니다. 예를 들어 드라이버는 내부 I/O 컨트롤 코드를 포함하는 I/O 요청에 대한 버퍼 내에서 드라이버 정의 구조를 수신할 수 있습니다. 드라이버는 CreatePreallocatedWdfMemory 호출하여 드라이버가 I/O 대상에 구조를 전달할 수 있도록 메모리 개체를 만들 수 있습니다.
UMDF 드라이버가 CreatePreallocatedWdfMemory 호출한 후 드라이버는 IWDFMemory::SetBuffer 호출하여 CreatePreallocatedWdfMemory가 메모리 개체에 다른 버퍼를 할당할 수 있습니다.
CreatePreallocatedWdfMemory 만든 프레임워크 메모리 개체가 삭제되면 프레임워크는 기존 버퍼의 할당을 취소하지 않습니다. 마찬가지로 IWDFMemory::SetBuffer 호출은 이전에 할당된 버퍼의 할당을 취소하지 않습니다.
예제
다음 코드 예제에서는 버퍼에 대 한 메모리 개체를 만드는 방법을 보여 있습니다.
//
// Allocate a request.
hr = wdfDevice->CreateRequest(NULL, NULL, &request);
// Allocate a buffer and wrap it in a memory object.
// Make the memory object a child of the request.
// When the request object is deleted, the memory object
// is also deleted.
if (SUCCEEDED(hr))
{
buffer = new BYTE[m_HidDescriptor->wReportLength];
if (buffer == NULL)
{
hr = E_OUTOFMEMORY;
}
}
if (SUCCEEDED(hr))
{
CComPtr<IWDFDriver> driver;
wdfDevice->GetDriver(&driver);
hr = driver->CreatePreallocatedWdfMemory(
buffer,
m_HidDescriptor->wReportLength,
NULL,
request,
&memory
);
}
요구 사항
요구 | 값 |
---|---|
지원 종료 | UMDF 2.0 이상에서는 사용할 수 없습니다. |
대상 플랫폼 | 바탕 화면 |
최소 UMDF 버전 | 1.5 |
헤더 | wudfddi.h(Wudfddi.h 포함) |
DLL | WUDFx.dll |