[原创]微软的驱动里的一个疑惑
.text:0001159E ; __stdcall TpmGetNextBurstValue(x, x, x)
.text:0001159E _TpmGetNextBurstValue@12 proc near ; CODE XREF: TpmGetCommandResultLoop(x,x,x,x)+A2p
.text:0001159E ; TpmWriteCommandAndStart(x,x,x)+36p
.text:0001159E
.text:0001159E arg_0 = dword ptr 8
.text:0001159E arg_4 = dword ptr 0Ch
.text:0001159E arg_8 = dword ptr 10h
.text:0001159E
.text:0001159E mov edi, edi
.text:000115A0 push ebp
.text:000115A1 mov ebp, esp
.text:000115A3 push esi
.text:000115A4 mov esi, [ebp+arg_4]
.text:000115A7 push edi
.text:000115A8 xor edi, edi
.text:000115AA xor eax, eax
.text:000115AC mov [esi], ax
.text:000115AF jmp short loc_115C5
.text:000115B1 ; ---------------------------------------------------------------------------
.text:000115B1
.text:000115B1 loc_115B1: ; CODE XREF: TpmGetNextBurstValue(x,x,x)+37j
.text:000115B1 push [ebp+arg_0]
.text:000115B4 call _TpmPollDelay@4 ; TpmPollDelay(x)
.text:000115B9 mov edi, eax
.text:000115BB test edi, edi
.text:000115BD jl short loc_115DE
.text:000115BF sub [ebp+arg_8], 10
.text:000115C3 js short loc_115D9
.text:000115C5
.text:000115C5 loc_115C5: ; CODE XREF: TpmGetNextBurstValue(x,x,x)+11j
.text:000115C5 push 19h ; Value
.text:000115C7 push [ebp+arg_0] ; int
.text:000115CA call _TpmINW@8 ; TpmINW(x,x)
.text:000115CF mov [esi], ax
.text:000115D2 test ax, ax
.text:000115D5 jbe short loc_115B1
.text:000115D7 jmp short loc_115DE
.text:000115D9 ; ---------------------------------------------------------------------------
.text:000115D9
.text:000115D9 loc_115D9: ; CODE XREF: TpmGetNextBurstValue(x,x,x)+25j
.text:000115D9 mov edi, 0C0000186h
.text:000115DE
.text:000115DE loc_115DE: ; CODE XREF: TpmGetNextBurstValue(x,x,x)+1Fj
.text:000115DE ; TpmGetNextBurstValue(x,x,x)+39j
.text:000115DE mov eax, edi
.text:000115E0 pop edi
.text:000115E1 pop esi
.text:000115E2 pop ebp
.text:000115E3 retn 0Ch
.text:000115E3 _TpmGetNextBurstValue@12 endp