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认证.水一篇....
标签:文件,Windows,C++,hr,param,本地,NULL,资源 From: https://www.cnblogs.com/qq525293680/p/17587741.html