Что означает код HRESULT 0xC00D36E0 (MF_E_SAMPLE_NOT_WRITABLE)?

 
Предыдущий Следующий
MF_E_SAMPLE_HAS_TOO_MANY_BUFFERS MF_E_INVALID_KEY

MF_E_SAMPLE_NOT_WRITABLE

Что означает MF_E_SAMPLE_NOT_WRITABLE

MF_E_SAMPLE_NOT_WRITABLE (0xC00D36E0) — Предоставленный образец недоступен для записи.

Компонент пытается изменить данные медиасэмпла или записать результат обработки, но предоставленное хранилище не допускает требуемую запись. Это может быть обычный буфер в системной памяти, двумерный видеобуфер или ресурс Direct3D с иными правилами доступа.

Что проверить и как подтвердить исправление

Определите конкретную требуемую операцию: изменение байтов, длины данных, списка буферов либо запись нового кадра. Для обычного IMFMediaBuffer проверяйте результат Lock и после записи устанавливайте корректную текущую длину данных.

Для двумерного видео или ресурса в видеопамяти обычный IMFMediaBuffer::Lock может быть неправильным путём; используйте интерфейс и режим блокировки, предусмотренные типом ресурса, например IMF2DBuffer2 там, где он доступен.

Если исходный медиасэмпл по контракту доступен только для чтения, создайте подходящий выходной медиасэмпл, доступный для записи, и копируйте данные только когда это действительно требуется. Повторный вызов Lock не меняет свойства самого ресурса.

Документация для результата 0xC00D36E0: IMFMediaBuffer::Lock · IMF2DBuffer2::Lock2DSize · Wine: sample and buffer interfaces.


Нужно найти другой код? Найти другой код состояния или ошибки.