文件操作 - 释放DLL资源到指定目录

 1 =============== Windows资源文件的读取 ===============
 2 
 3 Windows资源操作函数 
 4  12 LoadAccelerators  加载快捷键资源
 5 
 6  14 LoadBitmap      加载位图资源
 7 
 8  16 LoadCursor       加载光标资源
 9 
10  18 LoadIcon       加载图标资源
11 
12  20 LoadMenu       加载菜单资源
13 
14  22 LoadString     加载字符串资源
15 
16 
17 Windows资源操作函数 

29 FindResource    从指定模块中加载指定名称、类型的资源 18 19 31 SizeofResource  获取资源数据的长度 20 21 33 LoadResource   加载指定的资源至内存 22 23 35 LockResource   锁定指定的资源,并返回指向资源数据的指针 24 25 37 FreeResource   释放指定的资源 26 27 39 我们通常加载某个资源的步骤如下所示: 28 41 使用LoadLibrary()加载模块,或者获取当前应用程序的模块。 29 30 43 调用FindResource()从指定模块中查找指定的资源,返回该资源的句柄。 31 32 45 调用SizeofResource ()获取资源数据的长度。 33 34 47 调用LoadResource()将资源加载至内存。 35 36 49 调用LockResource()锁定资源,并返回指向资源数据的指针。 37 38 51 通过数据指针操作数据。 39 40 53 使用完毕,调用FreeResource()释放指定的资源。 41 42 // 释放【DLL文件】到指定的文件夹 43 BOOL ReleaseDLLRes(LPCTSTR szDLLFullPath, UINT uResID, LPCTSTR szResType) 44 { 45 if (uResID<=0 || !szResType) 46 { 47 return FALSE; 48 } 49 50 HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(uResID), szResType); 51 if ( NULL == hRsrc ) 52 { 53 return FALSE; 54 } 55 56 DWORD dwSize = SizeofResource(NULL, hRsrc); 57 if ( dwSize <= 0) 58 { 59 return FALSE; 60 } 61 62 HGLOBAL hGlobal = LoadResource(NULL, hRsrc); 63 if ( NULL == hGlobal ) 64 { 65 return FALSE; 66 } 67 68 LPVOID pBuffer = LockResource(hGlobal); 69 if ( NULL ==pBuffer ) 70 { 71 return FALSE; 72 } 73 74 HANDLE hFile = CreateFile(szDLLFullPath, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 75 if (INVALID_HANDLE_VALUE == hFile ) 76 { 77 return FALSE; 78 } 79 80 81 DWORD dwWrited = 0; 82 if (FALSE == WriteFile(hFile, pBuffer, dwSize, &dwWrited, NULL) ) 83 { 84 AfxMessageBox(_T("写入失败!")); 85 return FALSE; 86 } 87 88 CloseHandle(hFile); 89 UnlockResource(hGlobal); 90 FreeResource(hGlobal); 91 return TRUE; 92 }

 

转载于:https://www.cnblogs.com/DuanLaoYe/p/5446951.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值