求教,搞了一天还是不知道为什么
int main(int argc, char* argv[])
{
//打开文件
HANDLE hFile=CreateFile(argv[1],GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile==INVALID_HANDLE_VALUE)
{
printf("CreateFile Failed\n");
return 0;
}
//创建内存映射文件的内核对象
HANDLE hMap=CreateFileMapping(hFile,NULL,PAGE_READONLY,NULL,NULL,NULL);
if(hMap==INVALID_HANDLE_VALUE)
{
printf("CreateFileMapping Failed\n");
return 0;
}
//把文件映射入内存
LPVOID lpBase=MapViewOfFile(hMap,FILE_MAP_READ,0,0,0);
if(lpBase==NULL)
{
printf("MapViewOfFile Failed\n");
return 0;
}
IMAGE_DOS_HEADER *dosHeader;
IMAGE_NT_HEADERS *ntHeader;
IMAGE_IMPORT_BY_NAME *ImportName;
//lpBase由MapViewOfFile函数返回
dosHeader=(IMAGE_DOS_HEADER*)lpBase;
//检测是否是有效的PE文件
if (dosHeader->e_magic!=IMAGE_DOS_SIGNATURE)
{
printf("This is not a windows file\n");
return 0;
}
首先说下,这些代码是我从书上光盘代码复制出来的,搜索网上也是这样的代码。但是我用VC打开或者自己创建把代码放进去,都无法运行起来。执行就直接返回INVALID_HANDLE_VALUE了。
上面的函数,CreateFile和MapViewOfFile都返回0结束,不能向下执行了。如果我强制把return注释掉,程序执行到if (dosHeader->e_magic!=IMAGE_DOS_SIGNATURE)这里崩溃。
调试模式运行的时候,也是执行到if (dosHeader->e_magic!=IMAGE_DOS_SIGNATURE)这里就提示Unhandled exception in **.exe:0xc0000005:Access Violation.
{
//打开文件
HANDLE hFile=CreateFile(argv[1],GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile==INVALID_HANDLE_VALUE)
{
printf("CreateFile Failed\n");
return 0;
}
//创建内存映射文件的内核对象
HANDLE hMap=CreateFileMapping(hFile,NULL,PAGE_READONLY,NULL,NULL,NULL);
if(hMap==INVALID_HANDLE_VALUE)
{
printf("CreateFileMapping Failed\n");
return 0;
}
//把文件映射入内存
LPVOID lpBase=MapViewOfFile(hMap,FILE_MAP_READ,0,0,0);
if(lpBase==NULL)
{
printf("MapViewOfFile Failed\n");
return 0;
}
IMAGE_DOS_HEADER *dosHeader;
IMAGE_NT_HEADERS *ntHeader;
IMAGE_IMPORT_BY_NAME *ImportName;
//lpBase由MapViewOfFile函数返回
dosHeader=(IMAGE_DOS_HEADER*)lpBase;
//检测是否是有效的PE文件
if (dosHeader->e_magic!=IMAGE_DOS_SIGNATURE)
{
printf("This is not a windows file\n");
return 0;
}
首先说下,这些代码是我从书上光盘代码复制出来的,搜索网上也是这样的代码。但是我用VC打开或者自己创建把代码放进去,都无法运行起来。执行就直接返回INVALID_HANDLE_VALUE了。
上面的函数,CreateFile和MapViewOfFile都返回0结束,不能向下执行了。如果我强制把return注释掉,程序执行到if (dosHeader->e_magic!=IMAGE_DOS_SIGNATURE)这里崩溃。
调试模式运行的时候,也是执行到if (dosHeader->e_magic!=IMAGE_DOS_SIGNATURE)这里就提示Unhandled exception in **.exe:0xc0000005:Access Violation.
...全文
相关推荐
java获得指定日期的前一天,后一天的代码
这是因为解析字符串为日期时可能会因为格式不匹配而抛出此异常,妥善处理异常可以提高程序的健壮性。
要敢说不知道作文.doc
就像文章中提到的地理老师,他的“不知道”促使他积极寻求解答,这种不断求索的精神是个人成长和专业发展的重要推动力。再者,敢于求教、不耻下问是一种高尚的品质。
java 获取时间 本周本年本月第一天最后一天
#### 本周的第一天与最后一天在Java中,获取本周的第一天和最后一天主要依赖于`Calendar`类的设置。
你不知道我为什么离开你.doc
【知识点解析】这首歌《你不知道我为什么离开你》是由王力宏作词并作曲的一首情感丰富的歌曲,歌词中的主题围绕着爱情中的离别与内心的纠结。
javascript获取当月第一天和最后一天
标题“javascript获取当月第一天和最后一天”涉及的是JavaScript编程中的日期处理技术,特别是如何获取当前月份的第一天和最后一天的日期。


