Использование примеров кода пакета SDK для формата Windows Media
[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией.] Он был заменен средствами чтения источника и средствами записи приемника . средства чтения источников и записи приемника оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует при написании нового кода использовать Source Reader и Sink Writer вместо Windows Media Format 11 SDK, если это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
Многие из пояснительных разделов этого пакета SDK включают примеры кода. Примеры написаны как можно более четкими и краткими. При чтении примеров следует учитывать следующие соглашения.
Предполагается, что все примеры включают windows.h и wmsdk.h. Все другие необходимые файлы заголовков упоминаются в пояснительном тексте.
Проверка ошибок ограничена прерыванием функции при возникновении ошибки. В приложении необходимо проверить определенные коды ошибок и предоставить некоторые отчеты об ошибках.
При проверке возвращаемых значений из методов или функций, возвращающих значение HRESULT, следует использовать макрос FAILED, чтобы определить, является ли возвращаемое значение ошибкой.
HRESULT hr; hr = SomeFunction(); if (FAILED(hr)) { // Check for specific error values. }
Во многих примерах в этой документации используется макрос с именем GOTO_EXIT_IF_FAILED, который определен в следующем коде.
#ifndef GOTO_EXIT_IF_FAILED #define GOTO_EXIT_IF_FAILED(hr) if(FAILED(hr)) goto Exit; #endif
Эти примеры функций имеют тег "Exit:", после которого возвращаются все интерфейсы и память, выделенные в функции, и код ошибки, если таковой имеется.
Интерфейсы и память выпускаются в примерах кода с помощью макросов с именем SAFE_RELEASE и SAFE_ARRAY_DELETE. Эти макросы определены в следующем коде:
#ifndef SAFE_RELEASE #define SAFE_RELEASE(x) \ if(x != NULL) \ { \ x->Release(); \ x = NULL; \ } #endif #ifndef SAFE_ARRAY_DELETE #define SAFE_ARRAY_DELETE(x) \ if(x != NULL) \ { \ delete[] x; \ x = NULL; \ } #endif
Часто необходимо включить логику одного примера в другой пример, чтобы быть значимым. В этих случаях часто включается комментарий TODO со ссылкой на соответствующий пример кода.
Чтобы упростить чтение кода, ни одна из примеров функций в этой документации не проверяет входные параметры. При копировании любой из этих функций в код следует проверить все входные параметры.
Связанные разделы