ストリーム(IStream)のサイズの取得

IStream_Size APIの互換関数
(2004.11.29)
    // shlwapi.dll version 5.0 or later 互換
    // CStreamHelper::GetStreamSize()と同等
    static HRESULT Emulete_IStream_Size(
        IStream *pstm,
        ULARGE_INTEGER *pui)
    {
        if (pstm == NULL)
        {
            return E_FAIL;
        }
 
        if (pui == NULL)
        {
            return E_POINTER;
        }
 
        HRESULT hr = S_OK;
 
        try
        {
            ULARGE_INTEGER zero = {0, 0};
            *pui = zero;
 
            STATSTG stat;
            memset(&stat, 0, sizeof(stat));
 
            hr = pstm->Stat(&stat, STATFLAG_NONAME);
            if (FAILED(hr))
            {
                return hr;
            }
 
            *pui = stat.cbSize;
        }
        catch (...)
        {
            return E_FAIL;
        }
 
        return hr;
    }
一覧に戻る
© 2003 WAC.com All Right Reserved.