当前位置: 首页 > news >正文

php 读取网站文件长春专用网站建设

php 读取网站文件,长春专用网站建设,wordpress 套餐,网站建设的价在Windows编程中#xff0c;经常会遇到需要对数据进行压缩和解压缩的情况#xff0c;数据压缩是一种常见的优化手段#xff0c;能够减小数据的存储空间并提高传输效率。Windows提供了这些API函数#xff0c;本文将深入探讨使用Windows API进行数据压缩与解压缩的过程#…在Windows编程中经常会遇到需要对数据进行压缩和解压缩的情况数据压缩是一种常见的优化手段能够减小数据的存储空间并提高传输效率。Windows提供了这些API函数本文将深入探讨使用Windows API进行数据压缩与解压缩的过程主要使用ntdll.dll库中的相关函数。 RtlGetCompressionWorkSpaceSize RtlGetCompressionWorkSpaceSize 函数位于ntdll.dll库中。该函数用于获取数据压缩所需的工作空间大小。CompressionFormatAndEngine参数指定压缩格式和引擎CompressBufferWorkSpaceSize和CompressFragmentWorkSpaceSize分别用于输出缓冲区和片段的工作空间大小。 以下是该函数的声明 typedef NTSTATUS(WINAPI *typedef_RtlGetCompressionWorkSpaceSize)(_In_ USHORT CompressionFormatAndEngine,_Out_ PULONG CompressBufferWorkSpaceSize,_Out_ PULONG CompressFragmentWorkSpaceSize );该函数有以下参数 CompressionFormatAndEngine指定压缩格式和引擎的参数。CompressBufferWorkSpaceSize用于输出压缩缓冲区工作空间大小的指针。CompressFragmentWorkSpaceSize用于输出压缩片段工作空间大小的指针。 函数返回NTSTATUS类型的状态码其中STATUS_SUCCESS表示成功执行。 在使用这个函数时你需要提供足够大的缓冲区来存储工作空间大小。可以按照以下步骤使用该函数 加载 ntdll.dll 库。获取 RtlGetCompressionWorkSpaceSize 函数地址。定义变量用于存储工作空间大小。调用 RtlGetCompressionWorkSpaceSize 函数获取工作空间大小。 RtlCompressBuffer RtlCompressBuffer 同样位于ntdll.dll库中。该函数用于将数据进行压缩。CompressionFormatAndEngine参数指定压缩格式和引擎UncompressedBuffer和UncompressedBufferSize表示输入的未压缩数据CompressedBuffer和CompressedBufferSize表示输出的压缩数据UncompressedChunkSize表示未压缩数据的块大小FinalCompressedSize表示最终压缩后的大小WorkSpace表示用于工作的缓冲区。 以下是该函数的声明 typedef NTSTATUS(WINAPI *typedef_RtlCompressBuffer)(_In_ USHORT CompressionFormatAndEngine,_In_ PUCHAR UncompressedBuffer,_In_ ULONG UncompressedBufferSize,_Out_ PUCHAR CompressedBuffer,_In_ ULONG CompressedBufferSize,_In_ ULONG UncompressedChunkSize,_Out_ PULONG FinalCompressedSize,_In_ PVOID WorkSpace );该函数的参数包括 CompressionFormatAndEngine指定压缩格式和引擎的参数。UncompressedBuffer指向待压缩数据的指针。UncompressedBufferSize待压缩数据的大小。CompressedBuffer指向存储压缩数据的缓冲区的指针。CompressedBufferSize存储压缩数据的缓冲区的大小。UncompressedChunkSize未压缩的数据块的大小。FinalCompressedSize用于输出最终压缩数据的大小的指针。WorkSpace用于提供工作空间的指针。 函数返回NTSTATUS类型的状态码其中STATUS_SUCCESS表示成功执行。 在使用这个函数时你需要提供足够大的缓冲区来存储压缩后的数据。可以按照以下步骤使用该函数 加载ntdll.dll库。获取RtlCompressBuffer函数地址。定义变量并分配内存用于存储未压缩的数据和压缩后的数据。定义变量用于存储工作空间。调用RtlCompressBuffer函数将数据进行压缩。处理压缩后的数据。 RtlDecompressBuffer RtlDecompressBuffer 同样位于ntdll.dll库中。该函数用于将压缩数据进行解压缩。CompressionFormat参数指定压缩格式UncompressedBuffer和UncompressedBufferSize表示输出的未压缩数据CompressedBuffer和CompressedBufferSize表示输入的压缩数据FinalUncompressedSize表示最终解压缩后的大小。 以下是该函数的声明 typedef NTSTATUS(WINAPI *typedef_RtlDecompressBuffer)(_In_ USHORT CompressionFormat,_Out_ PUCHAR UncompressedBuffer,_In_ ULONG UncompressedBufferSize,_In_ PUCHAR CompressedBuffer,_In_ ULONG CompressedBufferSize,_Out_ PULONG FinalUncompressedSize );该函数的参数包括 CompressionFormat指定解压缩的格式。UncompressedBuffer指向存储解压后数据的缓冲区的指针。UncompressedBufferSize存储解压后数据的缓冲区的大小。CompressedBuffer指向待解压数据的指针。CompressedBufferSize待解压数据的大小。FinalUncompressedSize用于输出最终解压后数据的大小的指针。 函数返回NTSTATUS类型的状态码其中STATUS_SUCCESS表示成功执行。 在使用这个函数时你需要提供足够大的缓冲区来存储解压后的数据。可以按照以下步骤使用该函数 加载ntdll.dll库。获取RtlDecompressBuffer函数地址。定义变量并分配内存用于存储待解压的数据和解压后的数据。调用RtlDecompressBuffer函数将数据进行解压。处理解压后的数据。 // 代码来源 《WINDOWS黑客编程技术详解》 // 作者甘迪文 #include Windows.h #include iostream #include windef.htypedef NTSTATUS(WINAPI *typedef_RtlGetCompressionWorkSpaceSize)(_In_ USHORT CompressionFormatAndEngine,_Out_ PULONG CompressBufferWorkSpaceSize,_Out_ PULONG CompressFragmentWorkSpaceSize);typedef NTSTATUS(WINAPI *typedef_RtlCompressBuffer)(_In_ USHORT CompressionFormatAndEngine,_In_ PUCHAR UncompressedBuffer,_In_ ULONG UncompressedBufferSize,_Out_ PUCHAR CompressedBuffer,_In_ ULONG CompressedBufferSize,_In_ ULONG UncompressedChunkSize,_Out_ PULONG FinalCompressedSize,_In_ PVOID WorkSpace);typedef NTSTATUS(WINAPI *typedef_RtlDecompressBuffer)(_In_ USHORT CompressionFormat,_Out_ PUCHAR UncompressedBuffer,_In_ ULONG UncompressedBufferSize,_In_ PUCHAR CompressedBuffer,_In_ ULONG CompressedBufferSize,_Out_ PULONG FinalUncompressedSize);// 数据压缩 BOOL CompressData(BYTE *pUncompressData, DWORD dwUncompressDataLength, BYTE **ppCompressData, DWORD *pdwCompressDataLength) {BOOL bRet FALSE;NTSTATUS status 0;HMODULE hModule NULL;typedef_RtlGetCompressionWorkSpaceSize RtlGetCompressionWorkSpaceSize NULL;typedef_RtlCompressBuffer RtlCompressBuffer NULL;DWORD dwWorkSpaceSize 0, dwFragmentWorkSpaceSize 0;BYTE *pWorkSpace NULL;BYTE *pCompressData NULL;DWORD dwCompressDataLength 4096;DWORD dwFinalCompressSize 0;do{// 加载 ntdll.dll hModule ::LoadLibrary(ntdll.dll);if (NULL hModule){ShowError(LoadLibrary);break;}// 获取 RtlGetCompressionWorkSpaceSize 函数地址RtlGetCompressionWorkSpaceSize (typedef_RtlGetCompressionWorkSpaceSize)::GetProcAddress(hModule, RtlGetCompressionWorkSpaceSize);if (NULL RtlGetCompressionWorkSpaceSize){ShowError(GetProcAddress);break;}// 获取 RtlCompressBuffer 函数地址RtlCompressBuffer (typedef_RtlCompressBuffer)::GetProcAddress(hModule, RtlCompressBuffer);if (NULL RtlCompressBuffer){ShowError(GetProcAddress);break;}// 获取WorkSpqce大小status RtlGetCompressionWorkSpaceSize(COMPRESSION_FORMAT_LZNT1 | COMPRESSION_ENGINE_STANDARD, dwWorkSpaceSize, dwFragmentWorkSpaceSize);if (0 ! status){break;}// 申请动态内存pWorkSpace new BYTE[dwWorkSpaceSize];if (NULL pWorkSpace){break;}::RtlZeroMemory(pWorkSpace, dwWorkSpaceSize);while (TRUE){// 申请动态内存pCompressData new BYTE[dwCompressDataLength];if (NULL pCompressData){break;}::RtlZeroMemory(pCompressData, dwCompressDataLength);// 调用RtlCompressBuffer压缩数据RtlCompressBuffer(COMPRESSION_FORMAT_LZNT1, pUncompressData, dwUncompressDataLength, pCompressData, dwCompressDataLength, 4096, dwFinalCompressSize, (PVOID)pWorkSpace);if (dwCompressDataLength dwFinalCompressSize){// 释放内存if (pCompressData){delete[]pCompressData;pCompressData NULL;}dwCompressDataLength dwFinalCompressSize;}else{break;}}// 返回*ppCompressData pCompressData;*pdwCompressDataLength dwFinalCompressSize;bRet TRUE;} while (FALSE);// 释放if (pWorkSpace){delete[]pWorkSpace;pWorkSpace NULL;}if (hModule){::FreeLibrary(hModule);}return bRet; }// 数据解压缩 BOOL UncompressData(BYTE *pCompressData, DWORD dwCompressDataLength, BYTE **ppUncompressData, DWORD *pdwUncompressDataLength) {BOOL bRet FALSE;HMODULE hModule NULL;typedef_RtlDecompressBuffer RtlDecompressBuffer NULL;BYTE *pUncompressData NULL;DWORD dwUncompressDataLength 4096;DWORD dwFinalUncompressSize 0;do{// 加载 ntdll.dll hModule ::LoadLibrary(ntdll.dll);if (NULL hModule){break;}// 获取 RtlDecompressBuffer 函数地址RtlDecompressBuffer (typedef_RtlDecompressBuffer)::GetProcAddress(hModule, RtlDecompressBuffer);if (NULL RtlDecompressBuffer){break;}while (TRUE){// 申请动态内存pUncompressData new BYTE[dwUncompressDataLength];if (NULL pUncompressData){break;}::RtlZeroMemory(pUncompressData, dwUncompressDataLength);// 调用RtlCompressBuffer压缩数据RtlDecompressBuffer(COMPRESSION_FORMAT_LZNT1, pUncompressData, dwUncompressDataLength, pCompressData, dwCompressDataLength, dwFinalUncompressSize);if (dwUncompressDataLength dwFinalUncompressSize){// 释放内存if (pUncompressData){delete[]pUncompressData;pUncompressData NULL;}dwUncompressDataLength dwFinalUncompressSize;}else{break;}}// 返回*ppUncompressData pUncompressData;*pdwUncompressDataLength dwFinalUncompressSize;bRet TRUE;} while (FALSE);// 释放if (hModule){::FreeLibrary(hModule);}return bRet; }int main(int argc, char *argv[]) {DWORD i 0;BOOL bRet FALSE;char szBuffer[] DDDDDDDDDDGGGGGGGGGGGG;DWORD dwBufferLength ::lstrlen(szBuffer);BYTE *pCompressData NULL;DWORD dwCompressDataLength 0;BYTE *pUncompressData NULL;DWORD dwUncompressDataLength 0;// 压缩数据CompressData((BYTE *)szBuffer, dwBufferLength, pCompressData, dwCompressDataLength);// 解压数据UncompressData(pCompressData, dwCompressDataLength, pUncompressData, dwUncompressDataLength);// 显示printf(原数据为:\n);for (i 0; i dwBufferLength; i){printf(%X , szBuffer[i]);}printf(\n\n压缩数据为:\n);for (i 0; i dwCompressDataLength; i){printf(%X , pCompressData[i]);}printf(\n\n解压缩数据为:\n);for (i 0; i dwUncompressDataLength; i){printf(%X , pUncompressData[i]);}printf(\n);// 释放if (pUncompressData){delete[]pUncompressData;pUncompressData NULL;}if (pCompressData){delete[]pCompressData;pCompressData NULL;}system(pause);return 0; }
http://www.hkea.cn/news/14592426/

相关文章:

  • 烟台芝罘区住房建设局网站在哪里查关键词排名
  • 网站更新服务公司大连2021建设网
  • 网站登录密码忘记定安网站建设
  • 中国十大热门网站关于书店电商网站建设的心得
  • 义乌外贸网站制作上海出啥大事了今天
  • 网站推广策划评估工具7重庆云诚度网站建设
  • 苏州网站优化排名推广关注建设银行网站
  • 网站开发排行免费教如何php网站建设
  • 中国石油天然气第六建设公司网站专门做灯具海报的网站
  • wordpress 获取副标题标题关键词优化技巧
  • 制作公司网站怎样收费东莞有哪些公司
  • 网页网站设计公司排行榜广告设计平面设计软件
  • 招聘网站建设费用多少钱wordpress 主题 单栏
  • 丰功网站建设建设网站网站多少钱
  • 海口建网站公司网站建设与维护
  • 网站改版思路企业所得税怎么征收2021税率
  • 永仁县建设信息网站怎么做后台网站一键更新
  • 扬州网站建设电话iis默认网站 没有属性
  • 郑州东区做网站的公司郑州房产网新房
  • 做网站的背景图片深圳网红打卡旅游景点
  • 网站如何设置默认首页wordpress 发音
  • 建材网站建设哪家wordpress 搭建交易所
  • 江门网站推广策划免费proxy服务器地址
  • 网站安全性怎么做做网站的电脑软件
  • 百度怎么免费做网站网页设计教程ppt封面图片
  • 低价网站建设湘潭百度搜索排行
  • wordpress网站访问量做app网站需要什么技术
  • 安徽网站建设认准-晨飞网络中淼建设工程有限公司网站
  • 网站建设的简历桂林户外论坛
  • 给百度做网站的公司北京装修设计公司排行