Метод IWDFDriver::CreateWdfMemory (wudfddi.h)
[ предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе Начало работы с UMDF.]
Метод CreateWdfMemory создает объект памяти платформы и выделяет для объекта памяти буфер данных указанного ненулевого размера.
Синтаксис
HRESULT CreateWdfMemory(
[in] SIZE_T BufferSize,
[in, optional] IUnknown *pCallbackInterface,
[in, optional] IWDFObject *pParentObject,
[out] IWDFMemory **ppWdfMemory
);
Параметры
[in] BufferSize
Ненулевой указанный размер в байтах данных для только что созданного буфера данных объекта памяти WDF.
[in, optional] pCallbackInterface
Указатель на интерфейс IUnknown, который платформа использует для определения функций обратного вызова событий, связанных с объектом, на которые драйвер подписывается на только что созданный объект памяти. Этот параметр является необязательным. Драйвер может передать NULL, если драйвер не требует уведомления. Интерфейс IUnknown используется для очистки и удаления объектов. Если драйвер передает допустимый указатель, платформа вызовет QueryInterface в интерфейсе IUnknown для интерфейса IObjectCleanup. Если платформа получает интерфейс драйвера IObjectCleanup, платформа впоследствии может вызвать метод IObjectCleanup::OnCleanup драйвера, чтобы уведомить драйвер о том, что объект памяти очищается.
[in, optional] pParentObject
Указатель на интерфейс IWDFObject для родительского объекта созданного объекта памяти. Если null, объект драйвера становится родительским по умолчанию.
[out] ppWdfMemory
Указатель на буфер, который получает указатель на интерфейс IWDFMemory для созданного объекта памяти WDF.
Возвращаемое значение
CreateWdfMemory возвращает S_OK, если операция завершится успешно. В противном случае этот метод возвращает один из кодов ошибок, определенных в Winerror.h.
Замечания
Метод CreateWdfMemory выделяет буфер размера, указанного параметром bufferSize BufferSize, и создает объект памяти платформы, представляющий буфер.
Если значение NULL указано в параметре pParentObject, объект драйвера становится родительским объектом по умолчанию для только что созданного объекта памяти. Если драйвер UMDF создает объект памяти, который драйвер использует с определенным объектом устройства, объектом запроса или другим объектом платформы, драйвер должен соответствующим образом задать родительский объект объекта памяти. При удалении родительского объекта объект памяти и его буфер удаляются.
Драйвер UMDF также может удалить объект памяти и его буфер, вызвав IWDFObject::D eleteWdfObject.
Драйвер UMDF не может создать объект памяти с буфером нулевого размера. Если драйвер должен использовать буфер с нулевым размером, драйвер должен использовать вместо него объект памяти NULL. Например, если драйвер должен использовать буфер нулевого размера в запросе чтения, драйвер должен передать NULL параметру pOutputMemor y в вызове метода IWDFIoTarget::FormatRequestForRead.
Примеры
В следующем примере кода показано, как создать объект памяти, который может хранить данные, считываемые из 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 (include Wudfddi.h) |
DLL | WUDFx.dll |