内核函数指针问题,想破脑子也搞不明白,求好心人解答
#ifndef _WIN64
#define _os_min_base 0x80000000
#else
#define _os_min_base ((DWORD_PTR)MM_LOWEST_SYSTEM_ADDRESS) 
#endif
		DWORD Funptr = (DWORD_PTR) IoAllocateIrp;
		Funptr &= ~0xFFF;
		if (*(PSHORT)Funptr== 'ZM')	
		{
			//函数返回真
		} 
		else
		{
		       Funptr -= PAGE_SIZE;
		}
		if (Funptr<=_os_min_base)
		{
			Funptr=0;
			//函数返回假
					
		}
		
==================================================================================
问题1:
MM__LOWEST_SYSTEM_ADDRESS	网上查查是:获得最小的系统空间
                                这个系统空间具体指的啥啊?
问题2:
Funptr &= ~0xFFF;
if (*(PSHORT)Funptr== 'ZM')    这是要判断Funptr最高两字节的值是否等于'ZM',
                               这个高两字节啥情况下等于'ZM',啥时候不等于'ZM'
                               'ZM'又代表什么呢?
问题3:
Funptr -= PAGE_SIZE;           PAGE_SIZE在IDE里查不到定义,但是在源码里依然可以编译通过,
                               这是不是系统内存分页的最小单位,比如x86系统的内存分页最小
                               单位4k
              
                  驱动
                  内核
                  编程
              
------解决方案--------------------代码太短了。
问题1:按我的理解,最小的系统空间。应该就是内核的低地址边界。
就象32位,内核是从0x80000000开始的。而64位就是用那个宏来定义
问题2:这得看具体的内容吧。是ZM?还是MZ?
------解决方案--------------------判断是否是DOS头吧?