Ответ 1
COM не используется много в текущей разработке, но есть огромное количество программного обеспечения, все еще использующего его. Простое понимание основ должно быть достаточным.
От человека, желающего узнать больше о Windows Internals, прочитав книгу "Внутренние документы Windows" и желая попасть в развитие драйвера, хорошо изучает программирование COM?
Насколько глубоко я могу попасть в него? Просто ознакомьтесь с основами или следует понимать понимание, учитывая вышеизложенное.
COM не используется много в текущей разработке, но есть огромное количество программного обеспечения, все еще использующего его. Простое понимание основ должно быть достаточным.
COM также не имеет большого значения для разработки драйвера режима ядра, но он потенциально полезен для драйверов пользовательского режима. DirectShow - это COM, например, и даже легкий аналоговый COM-код, используемый в фильтрах DShow в режиме ядра.
Там много кода, то есть COM, а устаревший код занимает годы или десятилетия, чтобы исчезнуть. Но что более важно, IMO - это тот факт, что сборка .NET выглядит как объекты COM при использовании с C/С++, поэтому я думаю, что есть еще некоторое значение для знания COM, если вы намерены продолжать писать код C/С++.
Если вы планируете перейти на С#, Java или один из десятков других языков - без указателей, которые (судя по этим вопросам здесь), большинство программистов приняли, то нет, не стоит альтернативных издержек.
Драйверы устройств Windows не имеют ничего общего с COM. Вы можете быть безразличны к этому.
С одной стороны, COM, по-видимому, является предпочтительным для Microsoft способом взаимодействия между собственным и управляемым (. Net) кодом. И, честно говоря,.NET отлично справляется с COM.
С другой стороны, в бессмертных словах Lino Tadros:
COM похож на SMOKING: если вы еще не начали, вы не должны запускаться сейчас, если вы уже это делаете, пришло время остановиться.
Лично я использую его, когда мне нужно поговорить с существующими COM-объектами (например, MSXML), или если мне абсолютно необходимо поговорить с .NET-сборкой из собственного кода, где что-то вроде неуправляемого экспорта не является вариантом, "Это полезно для новой разработки.