Поделиться через


Метод 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 , и создает объект памяти платформы, представляющий буфер.

Если в параметре pParentObjectзадано значение NULL, объект driver становится родительским объектом по умолчанию для вновь созданного объекта памяти. Если драйвер UMDF создает объект памяти, который драйвер использует с определенным объектом устройства, объектом запроса или другим объектом платформы, драйвер должен соответствующим образом задать родительский объект объекта памяти. При удалении родительского объекта удаляются объект памяти и его буфер.

Драйвер UMDF также может удалить объект памяти и его буфер, вызвав IWDFObject::D eleteWdfObject.

Драйвер UMDF не может создать объект памяти с буфером нулевого размера. Если драйвер должен использовать буфер нулевого размера, драйвер должен использовать объект памяти NULL . Например, если драйвер должен использовать буфер нулевого размера в запросе на чтение, драйвер должен передать значение NULL параметру pOutputMemory в вызове метода 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 (включая Wudfddi.h)
DLL WUDFx.dll

См. также раздел

IObjectCleanup

IObjectCleanup::OnCleanup

IWDFDriver

IWDFIoTarget::FormatRequestForRead

IWDFMemory

IWDFObject

IWDFObject::D eleteWdfObject