|  |  |  |  |  |  | 
					            
						            
							            
								            |  | 
	Windows驱动开发帖子发起人: willingbug   发起时间: 2010-05-06 16:10 下午   回复: 5
 
	 
		
			| 
					
						|         | 
						      
						        | 帖子排序: |  |  |  |  
				
					| 
							
								| 
										
											|  2010-05-06, 16:10 下午 |  
											| 
													 willingbug 
 
   注册: 2010-03-21
 发 贴: 7
 |  |  
											| 
													
														|   | 
																
																	| 最近搞一个东西,发现有一个问题,搞不明白。如果我调用NdisAllocateMemory分配一个长度为1024的内存,再调用NdisFreeMemory时长度参数(IN UINT  Length,)填上512,这种情况下内存会正常释放吗?请大家多帮帮忙啊! 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2010-05-06, 17:44 下午 |  
											| 
													 compiler 
 
   注册: 2008-04-22
 发 贴: 21
 | 
													
														| Re: 有一个关于NdisFreeMemory的问题 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| NDIS_MEMORY_NONCACHED 必须指定大小 其它的无所谓~~~ 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2010-05-06, 18:30 下午 |  
											| 
													 王宇 
 
  
   注册: 2007-05-08
 发 贴: 306
 | 
													
														| Re: 有一个关于NdisFreeMemory的问题 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| NDIS!NdisFreeMemory: b9e095ce 8bff            mov     edi,edi
 b9e095d0 55              push    ebp
 b9e095d1 8bec            mov     ebp,esp
 b9e095d3 837d1000        cmp     dword ptr [ebp+10h],0
 b9e095d7 0f8563150000    jne     NDIS!NdisFreeMemory+0x18 (b9e0ab40)
 b9e095dd 6a00            push    0
 b9e095df ff7508          push    dword ptr [ebp+8]
 b9e095e2 ff1558dee0b9    call    dword ptr [NDIS!_imp__ExFreePoolWithTag (b9e0de58)]
 
 在32位下释放时不关注 ebp+c -- Length
 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2010-05-06, 19:19 下午 |  
											| 
													 compiler 
 
   注册: 2008-04-22
 发 贴: 21
 | 
													
														| Re: 有一个关于NdisFreeMemory的问题 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| b9e095d7 0f8563150000 jne NDIS!NdisFreeMemory+0x18 (b9e0ab40) 后面还有
 loc_12B40:                              ; CODE XREF: NdisFreeMemory(x,x,x)+9j
 .text:00012B40                 test    byte ptr [ebp+arg_8], 2
 .text:00012B44                 jz      short loc_12B57
 .text:00012B46                 push    [ebp+NumberOfBytes] ; NumberOfBytes
 .text:00012B49                 push    [ebp+BaseAddress] ; BaseAddress
 .text:00012B4C                 call    ds:__imp__MmFreeNonCachedMemory@8 ; __declspec(dllimport) MmFreeNonCachedMemory(x,x)
 .text:00012B52                 jmp     loc_115E8
 .text:00012B57 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
 .text:00012B57
 .text:00012B57 loc_12B57:                              ; CODE XREF: NdisFreeMemory(x,x,x)+1576j
 .text:00012B57                 test    byte ptr [ebp+arg_8], 1
 .text:00012B5B                 jz      loc_115E8
 .text:00012B61                 push    [ebp+BaseAddress] ; BaseAddress
 .text:00012B64                 call    ds:__imp__MmFreeContiguousMemory@4 ; __declspec(dllimport) MmFreeContiguousMemory(x)
 .text:00012B6A                 jmp     loc_115E8
 
 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2010-05-07, 15:32 下午 |  
											| 
													 willingbug 
 
   注册: 2010-03-21
 发 贴: 7
 | 
													
														| Re: 有一个关于NdisFreeMemory的问题 
 |  
														|  |  |  
											| 
													
														|   | 
																
																	| 是不是说如果指定了NDIS_MEMORY_NONCACHED标记在释放时就必须指定分配时的长度,如果不指定就会出现内存泄漏对吗? 
 |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
				
					| 
							
								| 
										
											|  2010-06-02, 20:21 下午 |  
											| 
													 willingbug 
 
   注册: 2010-03-21
 发 贴: 7
 | 
													
														| Re: 有一个关于NdisFreeMemory的问题 
 |  
														|  |  |  
											| 
													
														|   |  |  
														|  | IP 地址: 已记录 | 报告 |  |  |  |  
		
			| 高端调试 » 驱动程序开发 » Windows驱动开发 » Re: 有一个关于NdisFreeMemory的问题 |  |  
 |  |  |  |