структура DD_LOCKDATA (ddrawint.h)
Структура DD_LOCKDATA содержит сведения, необходимые для блокировки в соответствии со структурами параметров Microsoft DirectDraw.
Синтаксис
typedef struct _DD_LOCKDATA {
PDD_DIRECTDRAW_GLOBAL lpDD;
PDD_SURFACE_LOCAL lpDDSurface;
DWORD bHasRect;
RECTL rArea;
LPVOID lpSurfData;
HRESULT ddRVal;
VOID *Lock;
DWORD dwFlags;
FLATPTR fpProcess;
} *PDD_LOCKDATA, DD_LOCKDATA;
Члены
lpDD
Указывает на структуру DD_DIRECTDRAW_GLOBAL , описывающую устройство драйвера.
lpDDSurface
Указывает на DD_SURFACE_LOCAL структуру, описывающую поверхность (в случае LockD3DBuffer, буфер), связанную с областью памяти, которая должна быть заблокирована.
bHasRect
Указывает, является ли область в rArea допустимой. Значение 0x00000001 указывает на допустимую область, 0x00000000 указывает на недопустимую область.
rArea
Задает структуру RECTL , которая определяет область на поверхности для блокировки.
lpSurfData
Указывает расположение, в котором драйвер может возвращать указатель на заблокированную область памяти.
ddRVal
Указывает расположение, в котором драйвер записывает возвращаемое значение обратного вызова DdLock или LockD3DBuffer . Код возврата DD_OK указывает на успешное выполнение. Дополнительные сведения см. в разделе Возвращаемые значения для DirectDraw.
Lock
Используется API DirectDraw и не должен заполняться драйвером.
dwFlags
Указывает битовую маску, которая сообщает драйверу, как выполнить блокировку памяти. Этот член является побитовой или любого из следующих значений:
Flag | Значение |
---|---|
DDLOCK_DISCARDCONTENTS |
Этот флаг является подсказкой драйверу о том, что он может пропустить процесс отмены порядка, так как приложение планирует перезаписать каждый отдельный пиксель в поверхности или заблокированный прямоугольник (и поэтому стереть все неупорядоченные пиксели в любом случае). Приложения всегда должны устанавливать этот флаг, если они намерены перезаписать всю поверхность или заблокированный прямоугольник. |
DDLOCK_DONOTWAIT | В интерфейсах IDirectDrawSurface7 и более поздних версий по умолчанию используется DDLOCK_WAIT. Если вы хотите переопределить значение по умолчанию и использовать время, когда ускоритель занят (как указано в коде возврата DDERR_WASSTILLDRAWING), используйте этот флаг. |
DDLOCK_EVENT | Задайте значение , если дескриптор события передается в lock, который активирует событие, когда он может вернуть запрошенный указатель памяти surface. |
DDLOCK_HASVOLUMETEXTUREBOXRECT | Драйвер должен вернуть допустимый указатель памяти на начало текстуры вложенного модуля, указанной в прямоугольнике (RECTL) в rArea. Драйвер получает передние и задние координаты вложенного числа из верхних 16 бит левой и правой координат (левых и правых элементов RECTL) соответственно. Левая и правая координаты ограничены нижними 16 битами. Если прямоугольник не указан, драйвер должен вернуть указатель на верхнюю часть всего тома. Это значение доступно в DirectX 8.1 и более поздних версиях. |
DDLOCK_NODIRTYUPDATE |
|
DDLOCK_NOOVERWRITE | Используется только с блокировками буфера вершин Direct3D. Указывает, что никакие вершины, на которые ссылались вызовы IDirect3DDevice7::D rawPrimitiveVB и IDirect3DDevice7::D rawIndexedPrimitiveVB (описанные в документации по пакету SDK для Direct3D) с момента начала кадра (или последней блокировки без этого флага), не изменяются во время блокировки. Это может быть полезно, если данные добавляются только в буфер вершин. |
DDLOCK_NOSYSLOCK |
|
DDLOCK_OKTOSWAP | То же, что и DDLOCK_DISCARDCONTENTS. |
DDLOCK_READONLY | Заблокированная поверхность будет только считываться. В Windows 2000 и более поздних версиях этот флаг никогда не устанавливается. |
DDLOCK_SURFACEMEMORYPTR | Драйвер должен вернуть допустимый указатель памяти на верхнюю часть прямоугольника, указанного в rArea. Если прямоугольник не указан, драйвер должен вернуть указатель на верхнюю часть поверхности. |
DDLOCK_WAIT | Задайте значение , указывающее, что перед возвратом блокировка должна ждать получения допустимого указателя памяти. Если этот бит задан, блокировка никогда не возвращает DDERR_WASSTILLDRAWING. |
DDLOCK_WRITEONLY | Заблокированная поверхность будет записана только в . В Windows 2000 и более поздних версиях этот флаг никогда не устанавливается. |
fpProcess
Указывает указатель на сопоставление памяти драйвера в пользовательском режиме. Драйвер выполняет это сопоставление в DdMapMemory. Только Windows 2000 и более поздних версий.
Требования
Верхняя часть | ddrawint.h (включая Winddi.h) |