| Предыдущий | Следующий |
| MF_E_INVALIDNAME | MF_E_INVALID_FILE_FORMAT |
MF_E_INVALIDTYPE
Что означает MF_E_INVALIDTYPE
MF_E_INVALIDTYPE (0xC00D36BD) — операция получила значение или описание типа в представлении, которое для неё недопустимо.
У этого HRESULT есть несколько конкретных API-контекстов. IMFAttributes::SetItem возвращает его, если PROPVARIANT использует тип, не входящий в MF_ATTRIBUTE_TYPE. Методы чтения IMFAttributes возвращают тот же код, когда ключ существует, но фактический тип значения не совпадает с ожидаемым. У MFT метод IMFTransform::SetOutputType использует MF_E_INVALIDTYPE, если сам IMFMediaType внутренне некорректен, например содержит противоречащие друг другу параметры.
Что проверить и как подтвердить исправление
Для атрибутов запишите GUID ключа и фактический PROPVARIANT.vt; затем сравните его с типом, который ожидает конкретный метод чтения или записи. Для MFT сохраните основной тип, подтип и обязательные атрибуты предлагаемого IMFMediaType. Проверка должна идти по тому объекту, который непосредственно вернул HRESULT.
Не путайте MF_E_INVALIDTYPE с MF_E_INVALIDMEDIATYPE. В SetOutputType первый код означает, что описание типа само по себе некорректно, а второй — что описание корректно сформировано, но конкретный MFT не может его использовать. Исправление подтверждается успешным повтором с тем же значением, представленным в документированном типе.
Документация для результата 0xC00D36BD: IMFAttributes::SetItem · IMFAttributes::GetUnknown · IMFTransform::SetOutputType.
Нужно найти другой код? Найти другой код состояния или ошибки.
