| 
			 
					阅读:1599回复:3
				 
				急,关于Pci卡的CmResourceTypeMemory资源
					没有用过CmResourceTypeMemory资源,我是这样用的:
 
							在DEVICE_EXTENSION里定义: typedef struct _mpci{ ... PHYSICAL_ADDRESS phy_memory; PVOID MemoryBase; ULONG MemoryLength; }mpci,*pmpci; 在StartDevice里: pmpci dx; ......//枚举资源 switch(resource->Type) { ... case CmResourceTypeMemory: dx->phy_memory=resource->u.Memory.Start; dx->MemoryLength=resource->u.Memory.Length; break; ... } //处理一下: dx->MemoryBase=(PVOID)(dx->phy_memory.LowPart); //在使用的时候: char buf[20]; RtlCopyMemory((PULONG)dx->MemoryBase,buf,20); 不知道我这样使用CmResourceTypeMemory资源对不对,看到一些例程都是把CmResourceTypeMemory的处理放在和处理端口类似的代码里: 先得到u.Memory.Start,然后用MmMapIoSpace得到一个PUCHAR的地址,然后对其操作,但是那不是对映射到内存中的端口的操作吗? 如果本来就是Pci卡的内存资源呢?还需要再映射吗? 我这样操作的结果也好像不对,处理的过程正确吗?  | 
	|
					
						
						
						
						
  | 
	
| 
			 沙发# 
								发布于:2002-12-15 17:48				
			
					必须要用 MmMapIoSpace 函数进行映射,
 
							然后才能使用  | 
	|
| 
			 板凳# 
								发布于:2002-12-15 20:01				
			用户被禁言,该主题自动屏蔽! 				 | 
	|
| 
			 地板# 
								发布于:2002-12-16 11:03				
			
					多谢二位,MmMapIoSpace 后用RtlCopyMemory应该可以正常操作吧,我这里好像不正常,还需要其他的转化吗?				 
							 | 
	|
					
						
  |