Метод IMFAttributes::GetBlob (mfobjects.h)
Извлекает массив байтов, связанный с ключом. Этот метод копирует массив в буфер, выделенный вызывающим объектом.
Синтаксис
HRESULT GetBlob(
[in] REFGUID guidKey,
[out] UINT8 *pBuf,
[in] UINT32 cbBufSize,
[out] UINT32 *pcbBlobSize
);
Параметры
[in] guidKey
GUID, определяющий, какое значение следует извлечь. Тип атрибута должен быть MF_ATTRIBUTE_BLOB.
[out] pBuf
Указатель на буфер, выделенный вызывающим объектом. Если ключ найден, а значением является массив байтов, метод копирует массив в этот буфер. Чтобы найти требуемый размер буфера, вызовите imfAttributes::GetBlobSize.
[in] cbBufSize
Размер буфера pBuf в байтах.
[out] pcbBlobSize
Получает размер массива байтов. Этот параметр может принимать значение NULL.
Возвращаемое значение
Метод возвращает HRESULT. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице.
Код возврата | Описание |
---|---|
|
Метод выполнен успешно. |
|
Буфер недостаточно велик для массива. |
|
Указанный ключ не найден. |
|
Значение атрибута не является массивом байтов. |
Комментарии
Можно также использовать метод IMFAttributes::GetAllocatedBlob , который выделяет буфер для хранения массива байтов.
Этот интерфейс доступен на следующих платформах, если установлены распространяемые компоненты пакета SDK для Windows Media Format 11:
- Windows XP с пакетом обновления 2 (SP2) и более поздних версий.
- Windows XP Media Center Edition 2005 с установленным KB900325 (Windows XP Media Center Edition 2005) и KB925766 (накопительный пакет обновления за октябрь 2006 г. для Windows XP Media Center Edition).
Примеры
В следующем примере кода показано, как получить атрибут, значение которого является массивом байтов.
HRESULT AttributeGetBlob(IMFAttributes *pAttributes)
{
HRESULT hr = S_OK;
UINT32 cbBlob = 0;
BYTE *pBlob = NULL;
hr = pAttributes->GetBlobSize(MY_ATTRIBUTE, &cbBlob);
if (SUCCEEDED(hr))
{
pBlob = new BYTE[cbBlob];
if (pBlob == NULL)
{
hr = E_OUTOFMEMORY;
}
}
if (SUCCEEDED(hr))
{
hr = pAttributes->GetBlob(MY_ATTRIBUTE, pBlob, cbBlob, &cbBlob);
}
if (pBlob)
{
delete [] pBlob;
}
return hr;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | mfobjects.h (включая Mfidl.h) |
Библиотека | Mfuuid.lib |