设为首页 加入收藏

TOP

封装几个关于流IStream的功能函数
2014-11-15 20:41:42 来源: 作者: 【 】 浏览:27
Tags:封装 关于 IStream 功能 函数

  // =====================================================


  // 根据文件创建流对象


  // 参数:pszFile 文件路径


  // ppStream 保存创建的流对象


  // 返回值:返回创建成功与否


  // 说明:用完ppStream需释放


  // =====================================================


  BOOL CreateStreamFromFile (LPCTSTR pszFile, IStream** ppStream)


  {


  //打开文件


  HANDLE hFile = ::CreateFile (pszFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );


  if (hFile == INVALID_HANDLE_VALUE)


  return FALSE;


  BOOL bSuccess = TRUE;


  do


  {


  bSuccess = FALSE;


  //获取文件长度


  LARGE_INTEGER lSize;


  if (!::GetFileSizeEx (hFile, &lSize))


  break;


  //分配文件长度大小的内存块


  HGLOBAL hGlobal;


  hGlobal = ::GlobalAlloc (GPTR, lSize.LowPart);


  if (hGlobal == NULL)


  break;


  //将文件数据读入内存块


  void* pBuffer = (void*)hGlobal;


  DWORD dwReaded(0);


  if (::ReadFile (hFile, pBuffer, lSize.LowPart, &dwReaded, NULL))


  {


  //在内存块上创建流


  bSuccess = SUCCEEDED (::CreateStreamOnHGlobal (hGlobal, TRUE, ppStream));


  }


  } while (FALSE);


  ::CloseHandle (hFile);


  return bSuccess;


  }


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇std::vector实例化不需要类定义 下一篇C++builder消息的运用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: