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


Обработка нескольких блокировок

С помощью среды выполнения Direct3D можно разрешить буферам вершин и индексов иметь несколько незавершенных блокировок. Драйверы отображения пользовательского режима должны обрабатывать несколько блокировок так же, как и среда выполнения в модели драйвера дисплея Windows 2000.

Драйвер отображения пользовательского режима не должен завершать вызов функции LockAsync для ресурса, который уже заблокирован. Это значит, что драйвер не может завершать вызовы функции LockAsync для определенного ресурса после того, как первый вызов функции LockAsync успешно блокирует этот ресурс. Аналогичным образом драйвер не может завершать вызовы функции Lock для определенного ресурса после того, как первый вызов функции Lock успешно блокирует этот ресурс. Среда выполнения соответствует каждому вызову функции LockAsync драйвера с вызовом функции UnlockAsync драйвера. Среда выполнения также соответствует каждому вызову функции Lock драйвера с вызовом функции Разблокировки драйвера.

Драйвер отображения пользовательского режима не может завершить вызов функции UnlockAsync , если ресурс, описываемый структурой D3DDDIARG_UNLOCKASYNC , не был фактически заблокирован предыдущим вызовом функции LockAsync драйвера. Аналогичным образом драйвер не может завершить вызов функции Unlock , если ресурс, описываемый структурой D3DDDIARG_UNLOCK , не был фактически заблокирован предыдущим вызовом функции блокировки драйвера. В ситуациях, когда ресурсы ранее не были заблокированы, UnlockAsync и Unlock возвращают E_INVALIDARG.