📄 wmirtns.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.00.9178
TITLE .\wmirtns.cpp
.386P
include listing.inc
if @Version gt 510
.model FLAT
else
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
_DATA SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA ENDS
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
_BSS SEGMENT DWORD USE32 PUBLIC 'BSS'
_BSS ENDS
$$SYMBOLS SEGMENT BYTE USE32 'DEBSYM'
$$SYMBOLS ENDS
$$TYPES SEGMENT BYTE USE32 'DEBTYP'
$$TYPES ENDS
_TLS SEGMENT DWORD USE32 PUBLIC 'TLS'
_TLS ENDS
; COMDAT ??_C@_0CF@DMGHPOPJ@h?3?2winddk?22600?2inc?2ddk?2wdm?2wxp?2w@
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
; COMDAT ??_C@_0BN@LNCICLID@allocateCommonBuffer?5?$CB?$DN?5NULL?$AA@
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
; COMDAT ??_C@_0BJ@FEHDECOO@freeCommonBuffer?5?$CB?$DN?5NULL?$AA@
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
; COMDAT ??_C@_0BP@KANDHLLG@allocateAdapterChannel?5?$CB?$DN?5NULL?$AA@
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
; COMDAT ??_C@_0BM@EHBDCMHD@flushAdapterBuffers?5?$CB?$DN?5NULL?$AA@
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
; COMDAT ??_C@_0BL@EEOOFOPL@freeAdapterChannel?5?$CB?$DN?5NULL?$AA@
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
; COMDAT ??_C@_0BJ@LFNJJHAK@freeMapRegisters?5?$CB?$DN?5NULL?$AA@
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
; COMDAT ??_C@_0BE@JFCEOPNH@mapTransfer?5?$CB?$DN?5NULL?$AA@
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
; COMDAT ??_C@_0BI@NHKOAKLK@getDmaAlignment?5?$CB?$DN?5NULL?$AA@
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
; COMDAT ??_C@_0BH@IOFGABID@readDmaCounter?5?$CB?$DN?5NULL?$AA@
CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST ENDS
; COMDAT _IsEqualGUID@8
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
; COMDAT _==@8
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
; COMDAT _PassthruWMIGetAddrArray@12
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
; COMDAT _PassthruWMISetAddrArray@12
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
_TEXT ENDS
FLAT GROUP _DATA, CONST, _BSS
ASSUME CS: FLAT, DS: FLAT, SS: FLAT
endif
INCLUDELIB LIBC
INCLUDELIB OLDNAMES
PUBLIC _PassthruWMIGetAddrArray@12
EXTRN __imp__NdisAcquireReadWriteLock@12:NEAR
EXTRN __imp__NdisReleaseReadWriteLock@8:NEAR
; Function compile flags: /Odt
; File g:\pcadev\ndisim\passthruex\part2\james\james\sys\wmirtns.cpp
; COMDAT _PassthruWMIGetAddrArray@12
_TEXT SEGMENT
_saveLockState$ = -12
_status$ = -8
_ulBfrNeeded$ = -4
_pAdapt$ = 8
_pUlInArr$ = 12
_pInArr$ = 16
_PassthruWMIGetAddrArray@12 PROC NEAR ; COMDAT
; 36 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 0c sub esp, 12 ; 0000000cH
00006 56 push esi
00007 57 push edi
; 37 : NDIS_STATUS status = NDIS_STATUS_SUCCESS;
00008 c7 45 f8 00 00
00 00 mov DWORD PTR _status$[ebp], 0
; 38 : LOCK_STATE saveLockState;
; 39 : ULONG ulBfrNeeded;
; 40 :
; 41 : NdisAcquireReadWriteLock( // Get lock.
; 42 : &pAdapt->IPAddrArrLock,
; 43 : FALSE, // Read access.
; 44 : &saveLockState
; 45 : );
0000f 8d 45 f4 lea eax, DWORD PTR _saveLockState$[ebp]
00012 50 push eax
00013 6a 00 push 0
00015 8b 4d 08 mov ecx, DWORD PTR _pAdapt$[ebp]
00018 81 c1 d0 00 00
00 add ecx, 208 ; 000000d0H
0001e 51 push ecx
0001f ff 15 00 00 00
00 call DWORD PTR __imp__NdisAcquireReadWriteLock@12
; 46 :
; 47 : ulBfrNeeded = pAdapt->pIPAddrArray->ulArrayStr - // Determine amount of space needed to set answer.
; 48 : FIELD_OFFSET(IPAddrFilterArray, IPAddrArray);
00025 8b 55 08 mov edx, DWORD PTR _pAdapt$[ebp]
00028 8b 82 e0 02 00
00 mov eax, DWORD PTR [edx+736]
0002e 8b 08 mov ecx, DWORD PTR [eax]
00030 83 e9 04 sub ecx, 4
00033 89 4d fc mov DWORD PTR _ulBfrNeeded$[ebp], ecx
; 49 :
; 50 : if (ulBfrNeeded>*pUlInArr) // Is provided structure too small?
00036 8b 55 0c mov edx, DWORD PTR _pUlInArr$[ebp]
00039 8b 45 fc mov eax, DWORD PTR _ulBfrNeeded$[ebp]
0003c 3b 02 cmp eax, DWORD PTR [edx]
0003e 76 09 jbe SHORT $L15616
; 51 : status = NDIS_STATUS_BUFFER_TOO_SHORT;
00040 c7 45 f8 16 00
01 c0 mov DWORD PTR _status$[ebp], -1073676266 ; c0010016H
; 52 : else
00047 eb 20 jmp SHORT $L15618
$L15616:
; 53 : NdisMoveMemory(pInArr, // Copy address array into provided structure.
; 54 : &pAdapt->pIPAddrArray->IPAddrArray,
; 55 : ulBfrNeeded
; 56 : );
00049 8b 4d fc mov ecx, DWORD PTR _ulBfrNeeded$[ebp]
0004c 8b 55 08 mov edx, DWORD PTR _pAdapt$[ebp]
0004f 8b b2 e0 02 00
00 mov esi, DWORD PTR [edx+736]
00055 83 c6 04 add esi, 4
00058 8b 7d 10 mov edi, DWORD PTR _pInArr$[ebp]
0005b 8b c1 mov eax, ecx
0005d c1 e9 02 shr ecx, 2
00060 f3 a5 rep movsd
00062 8b c8 mov ecx, eax
00064 83 e1 03 and ecx, 3
00067 f3 a4 rep movsb
$L15618:
; 57 :
; 58 : *pUlInArr = ulBfrNeeded; // Show amount that is needed or that was actually used.
00069 8b 4d 0c mov ecx, DWORD PTR _pUlInArr$[ebp]
0006c 8b 55 fc mov edx, DWORD PTR _ulBfrNeeded$[ebp]
0006f 89 11 mov DWORD PTR [ecx], edx
; 59 :
; 60 : NdisReleaseReadWriteLock( // Release lock.
; 61 : &pAdapt->IPAddrArrLock,
; 62 : &saveLockState
; 63 : );
00071 8d 45 f4 lea eax, DWORD PTR _saveLockState$[ebp]
00074 50 push eax
00075 8b 4d 08 mov ecx, DWORD PTR _pAdapt$[ebp]
00078 81 c1 d0 00 00
00 add ecx, 208 ; 000000d0H
0007e 51 push ecx
0007f ff 15 00 00 00
00 call DWORD PTR __imp__NdisReleaseReadWriteLock@8
; 64 :
; 65 : return status;
00085 8b 45 f8 mov eax, DWORD PTR _status$[ebp]
; 66 : }
00088 5f pop edi
00089 5e pop esi
0008a 8b e5 mov esp, ebp
0008c 5d pop ebp
0008d c2 0c 00 ret 12 ; 0000000cH
_PassthruWMIGetAddrArray@12 ENDP
_TEXT ENDS
PUBLIC _PassthruWMISetAddrArray@12
EXTRN __imp__NdisAllocateMemoryWithTag@12:NEAR
EXTRN __imp__NdisFreeMemory@12:NEAR
EXTRN _DbgPrint:NEAR
; COMDAT _PassthruWMISetAddrArray@12
_TEXT SEGMENT
$SG15642 DB 'Passthru: ', 00H
ORG $+1
$SG15643 DB 'PassthruWMISetAddrArray(): Couldn''t get storage', 0aH, 00H
; Function compile flags: /Odt
_saveLockState$ = -12
_status$ = -8
_ulArrStr$ = -4
_pAdapt$ = 8
_ulElems$ = 12
_pInArr$ = 16
_PassthruWMISetAddrArray@12 PROC NEAR ; COMDAT
; 79 : {
0003e 55 push ebp
0003f 8b ec mov ebp, esp
00041 83 ec 0c sub esp, 12 ; 0000000cH
00044 56 push esi
00045 57 push edi
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -