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