Метод IDirectDrawSurface7::SetPrivateData (ddraw.h)
Связывает данные с поверхностью, которая предназначена для использования приложением, а не DirectDraw. Данные передаются по значению, и несколько наборов данных могут быть связаны с одной поверхностью.
Синтаксис
HRESULT SetPrivateData(
[in] REFGUID unnamedParam1,
[in] LPVOID unnamedParam2,
[in] DWORD unnamedParam3,
[in] DWORD unnamedParam4
);
Параметры
[in] unnamedParam1
Ссылка на (C++) или адрес (C) глобально уникальный идентификатор, определяющий устанавливаемые частные данные.
[in] unnamedParam2
Указатель на буфер, содержащий данные, связанные с поверхностью.
[in] unnamedParam3
Значение размера буфера в lpData в байтах.
[in] unnamedParam4
Значение, которое можно задать для одного из следующих флагов. Эти флаги описывают тип передаваемых данных или запрос на аннулирование данных при изменении поверхности.
(нет)
Если флаги не указаны, DirectDraw выделяет память для хранения данных в буфере и копирует данные в новый буфер. Буфер, выделенный DirectDraw, автоматически освобождается при необходимости.
DDSPD_IUNKNOWNPOINTER
Данные в lpData являются указателем на интерфейс IUnknown . DirectDraw автоматически вызывает метод IUnknown::AddRef этого интерфейса. Если эти данные больше не нужны, DirectDraw автоматически вызывает метод IUnknown::Release этого интерфейса.
DDSPD_VOLATILE
Буфер в lpData действителен только в том случае, если поверхность остается неизменной. Если содержимое поверхности изменяется, последующие вызовы метода IDirectDrawSurface7::GetPrivateData возвращают DDERR_EXPIRED.
Возвращаемое значение
Если метод выполнен успешно, возвращаемое значение будет DD_OK.
В случае сбоя метод может вернуть одно из следующих значений ошибки:
- DDERR_INVALIDOBJECT
- DDERR_INVALIDPARAMS
- DDERR_OUTOFMEMORY
Комментарии
DirectDraw не управляет памятью в lpData. Если этот буфер был выделен динамически, вызывающий объект должен освободить память.
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | ddraw.h |
Библиотека | Ddraw.lib |
DLL | Ddraw.dll |