Always keep a begi|

高粱地里写BUG

园龄:3年4个月粉丝:4关注:3

C++实现Windows释放资源文件到本地

 C++实现释放资源文件到本地

用途很多,可以实现动态释放DLL文件,需时加载.

复制代码
/**
 * \brief 释放资源文件到本地
 * \param lpName 资源文件名称
 * \param lpType 资源文件分类
 * \param lpFileName 生成到本地的文件名称
 * \return 
 */
BOOL ReleaseResource(_In_ LPCWSTR lpName, _In_ LPCWSTR lpType, LPCWSTR lpFileName)
{
    //寻找资源文件
    HRSRC hr = ::FindResource(NULL, lpName, lpType);
    if (NULL == hr)
    {
        int ierr = GetLastError();
        return false;
    }
    //判断资源文件大小
    ULONG nResSize = ::SizeofResource(NULL, hr);  // Data size/length  
    //加载资源文件
    HGLOBAL hG = ::LoadResource(NULL, hr);
    if (NULL == hG || nResSize <= 0)
    {
        return false;
    }
    //锁定资源文件
    LPVOID pBuffer = LockResource(hG);
    if (NULL == pBuffer)
        return false;
    //创建本地文件
    HANDLE hFile = CreateFile(lpFileName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL,
        CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if (hFile == INVALID_HANDLE_VALUE)
    {
        return FALSE;
    }
    //写入本地文件
    DWORD dwWrite = 0;
    WriteFile(hFile, pBuffer, nResSize, &dwWrite, NULL);
    CloseHandle(hFile);
    //释放资源文件
    FreeResource(hG);
}
复制代码

最近比较忙,在搞HCK认证.水一篇....

posted @   高粱地里写BUG  阅读(173)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起