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认证.水一篇....
合集:
业务开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步