下面总是运行到//关闭文件 *pFileBuffer = pTempFileBuffer;这里控制台就停止运行了,为啥呢1 分钟前亦云的海角 | 浏览 0 次 iWork#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <malloc.h>
#include<basetsd.h>
#include <process.h>
#include <Windows.h>
#define FILEPATH_IN "c:\\ipmsg.exe"
DWORD ReadPEFile(IN LPSTR lpszFile,OUT LPVOID* pFileBuffer){
FILE* pFile =NULL;
DWORD fileSize =0;
LPVOID pTempFileBuffer =NULL;
//打开文件
pFile =fopen(lpszFile,"rb");
if(!pFile){
printf("无法打开EXE文件");
return 0;
}
fseek(pFile,0,SEEK_END);
fileSize=ftell(pFile);
printf("%d",fileSize);
fseek(pFile,0,SEEK_SET);
//分配缓冲区
pTempFileBuffer = malloc(fileSize);
if(!pTempFileBuffer){
printf("分配空间失败");
fclose(pFile);
return 0;
}
//将文件数据读取到缓冲区
size_t n = fread(pTempFileBuffer,fileSize,1,pFile);
if(!n){
printf("读取数据失败!\n");
free(pTempFileBuffer);
fclose(pFile);
return 0;
}
//关闭文件
*pFileBuffer = pTempFileBuffer;
pTempFileBuffer=NULL;
fclose(pFile);
return fileSize;
}
int main(int argc, char* argv[])
{
LPVOID pFileBuffer = NULL;
ReadPEFile(FILEPATH_IN,&pFileBuffer );
return 0;
}
#include <stdio.h>
#include <windows.h>
#include <malloc.h>
#include<basetsd.h>
#include <process.h>
#include <Windows.h>
#define FILEPATH_IN "c:\\ipmsg.exe"
DWORD ReadPEFile(IN LPSTR lpszFile,OUT LPVOID* pFileBuffer){
FILE* pFile =NULL;
DWORD fileSize =0;
LPVOID pTempFileBuffer =NULL;
//打开文件
pFile =fopen(lpszFile,"rb");
if(!pFile){
printf("无法打开EXE文件");
return 0;
}
fseek(pFile,0,SEEK_END);
fileSize=ftell(pFile);
printf("%d",fileSize);
fseek(pFile,0,SEEK_SET);
//分配缓冲区
pTempFileBuffer = malloc(fileSize);
if(!pTempFileBuffer){
printf("分配空间失败");
fclose(pFile);
return 0;
}
//将文件数据读取到缓冲区
size_t n = fread(pTempFileBuffer,fileSize,1,pFile);
if(!n){
printf("读取数据失败!\n");
free(pTempFileBuffer);
fclose(pFile);
return 0;
}
//关闭文件
*pFileBuffer = pTempFileBuffer;
pTempFileBuffer=NULL;
fclose(pFile);
return fileSize;
}
int main(int argc, char* argv[])
{
LPVOID pFileBuffer = NULL;
ReadPEFile(FILEPATH_IN,&pFileBuffer );
return 0;
}