Re: 有一个关于NdisFreeMemory的问题
Windows驱动开发
有一个关于NdisFreeMemory的问题
willingbug
2010-05-06, 16:10 下午
最近搞一个东西,发现有一个问题,搞不明白。如果我调用NdisAllocateMemory分配一个长度为1024的内存,再调用NdisFreeMemory时长度参数(IN UINT Length,)填上512,这种情况下内存会正常释放吗?请大家多帮帮忙啊!
Re: 有一个关于NdisFreeMemory的问题
compiler
2010-05-06, 17:44 下午
NDIS_MEMORY_NONCACHED 必须指定大小 其它的无所谓~~~
Re: 有一个关于NdisFreeMemory的问题
王宇
2010-05-06, 18:30 下午
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
Re: 有一个关于NdisFreeMemory的问题
compiler
2010-05-06, 19:19 下午
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
Re: 有一个关于NdisFreeMemory的问题
willingbug
2010-05-07, 15:32 下午
是不是说如果指定了NDIS_MEMORY_NONCACHED标记在释放时就必须指定分配时的长度,如果不指定就会出现内存泄漏对吗?
Re: 有一个关于NdisFreeMemory的问题
willingbug
2010-06-02, 20:21 下午
终于明白了,结贴呵呵