GUID и CLSID в разных форматах?

Я работаю над фильтром MP4 в DirectShow. В настоящее время я пытаюсь создать объект IBaseFilter, но одним из требований является CLSID для CoCreateInstance.

Я не понимаю, откуда взялся этот идентификатор. Могу ли я получить его из GraphEdit > Вставить фильтр? Если это так, он дает мне в формате {00000000-0000-0000-0000-000000000000} Однако большинство примеров, которые я видел, в формате

static const GUID CLSID_MPEG4Demux = { 0x025BE2E4, 0x1787, 0x4DA4, 0xA5, 0x85, 0xC5, 0xB2, 0xB9, 0xEE, 0xB5, 0x7C };

Нужен ли конвертер для этого?

1 ответ

Решение

CLSID является основным COM-идентификатором для зарегистрированного класса. Все фильтры DirectShow, которые зарегистрированы как общедоступные, имеют свои CLSID, жестко закодированные разработчиками. Если ваша работа с фильтром MP4 предполагает, что вы являетесь разработчиком фильтра MP4, то вам нужно ввести свой собственный CLSID (генерировать с помощью инструмента "Создать GUID" (guidgen.exe), API и т. Д.). Если вы хотите посмотреть CLSID существующего зарегистрированного фильтра, вы можете узнать его, используя GraphEdit или, вернее, GraphStudioNext, просматривая список зарегистрированных фильтров:

введите описание изображения здесь

Другие вопросы по тегам