| 
					阅读:1588回复: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应该可以正常操作吧,我这里好像不正常,还需要其他的转化吗?				 | |
| 
 | 
 
							
 
				 
				
