Похоже, мне нужно будет предоставить детали для голосования "вверх" .. Хорошо.
Внутренний флэш-буфер при первом инициализации указывает, загружен ли фильм или содержит ли буфер в свойствах буфера первые четыре байта.
gUfU - фильм не загружен. свойства для подражания ....
fUfU - .. [4 байта] размер как целое число.
тогда несжатый фильм или SWF как бы.
Напишите класс IStream.
заполните выше.
сохранить как szFile
TFlashStream *fStream = new TFlashStream(szFile);
// QI flash player
IPersistStreamInit * psStreamInit = 0;
shock->QueryInterface(::IID_IPersistStreamInit,
(LPVOID*)&psStreamInit);
if(psStreamInit)
{
psStreamInit->InitNew();
psStreamInit->Load(fStream);
psStreamInit->Release();
}
delete fStream;
Что следует отметить:
Когда psStreamInit-> Load (fStream);
вызовет IStream :: Read, ища заголовок 'fUfU'.
Если возвращение верное, psStreamInit вызывает IStream :: Read для размера буфера.
Если что-то пока выглядит хорошо, psStreamInit затем читает 1024-байтовые куски, пока чтение не будет исчерпано.
Тем не мение. для заголовка и размера файла.
STDMETHOD(Read)(void *pv, ULONG cb, ULONG *pcbRead)
pcbRead недействителен. Вы можете использовать что-то вроде
IsBadReadPtr
-
Michael