📄 maxkeydll.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4237
TTL D:\WINCE500\PLATFORM\zylonite_mhl\SRC\DRIVERS\KeyPad\MAXKEY\.\maxkeydll.cpp
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
EXPORT |?v_uiPddId@@3IA| [ DATA ] ; v_uiPddId
EXPORT |?v_pfnKeybdEvent@@3P6AXIIH@ZA| [ DATA ] ; v_pfnKeybdEvent
EXPORT |??_C@_1BI@MOJFBKAP@?$AAP?$AAS?$AA?1?$AA2?$AA?5?$AAS?$AAA?$AA1?$AA1?$AAX?$AA1?$AA?$AA@| [ DATA ] ; `string'
00000 AREA |.bss|, NOINIT
|?v_uiPddId@@3IA| % 0x4 ; v_uiPddId
|?v_pfnKeybdEvent@@3P6AXIIH@ZA| % 0x4 ; v_pfnKeybdEvent
00000 AREA |.data|, DATA
|PS28042Pdd| DCW 0x2
% 2
DCD |??_C@_1BI@MOJFBKAP@?$AAP?$AAS?$AA?1?$AA2?$AA?5?$AAS?$AAA?$AA1?$AA1?$AAX?$AA1?$AA?$AA@|
DCD |?PS2_SA11X1_PowerHandler@@YAXIH@Z|
DCD |?PS2_SA11X1_ToggleLights@@YAXII@Z|
00000 AREA |.rdata| { |??_C@_1BI@MOJFBKAP@?$AAP?$AAS?$AA?1?$AA2?$AA?5?$AAS?$AAA?$AA1?$AA1?$AAX?$AA1?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BI@MOJFBKAP@?$AAP?$AAS?$AA?1?$AA2?$AA?5?$AAS?$AAA?$AA1?$AA1?$AAX?$AA1?$AA?$AA@| DCB "P"
DCB 0x0, "S", 0x0, "/", 0x0, "2", 0x0, " ", 0x0, "S", 0x0, "A"
DCB 0x0, "1", 0x0, "1", 0x0, "X", 0x0, "1", 0x0, 0x0, 0x0 ; `string'
EXPORT |?MaxReadRegDWORD@@YAHPBG0PAK@Z| ; MaxReadRegDWORD
IMPORT |RegCloseKey|
IMPORT |RegOpenKeyExW|
IMPORT |RegQueryValueExW|
; File d:\wince500\platform\zylonite_mhl\src\drivers\keypad\maxkey\maxkeydll.cpp
00000 AREA |.text| { |?MaxReadRegDWORD@@YAHPBG0PAK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?MaxReadRegDWORD@@YAHPBG0PAK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?MaxReadRegDWORD@@YAHPBG0PAK@Z| } ; comdat associative
|$T29284| DCD |$L29283|
DCD 0x40002302
; Function compile flags: /Ogsy
00000 AREA |.text| { |?MaxReadRegDWORD@@YAHPBG0PAK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?MaxReadRegDWORD@@YAHPBG0PAK@Z| PROC ; MaxReadRegDWORD
; 61 : {
00000 |$L29283|
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 e24dd014 sub sp, sp, #0x14
00008 |$M29281|
00008 e1a06001 mov r6, r1
0000c e1a01000 mov r1, r0
00010 e1a05002 mov r5, r2
; 62 : HKEY hKeybd;
; 63 : DWORD ValType;
; 64 : DWORD ValLen;
; 65 : DWORD status;
; 66 : BOOL fRet = FALSE;
; 67 :
; 68 : //默认值设为:0
; 69 : *pdwValue = 0;
00014 e3a02000 mov r2, #0
; 70 :
; 71 : // Get the device key from the active device registry key
; 72 : status = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szKeyName, 0, 0, &hKeybd); //成功返回0,否则非0;回送&hKeybd键句柄值
00018 e28d3008 add r3, sp, #8
0001c e5852000 str r2, [r5]
00020 e58d3000 str r3, [sp]
00024 e3a03000 mov r3, #0
00028 e3a02000 mov r2, #0
0002c e3a0010a mov r0, #0xA, 2
00030 e3a04000 mov r4, #0
00034 eb000000 bl RegOpenKeyExW
00038 e3500000 cmp r0, #0
; 73 : if (status)
0003c 1a00000b bne |$leave$29197|
; 74 : {
; 75 : DEBUGMSG(1, (TEXT("MaxReadRegDWORD: RegOpenKeyEx(HLM\\%s) returned %d!!!\r\n"), szKeyName, status));
; 76 : goto leave;
; 77 : }
; 78 :
; 79 : ValLen = sizeof(DWORD);
; 80 : status = RegQueryValueEx(hKeybd, szValueName, NULL, &ValType, (PUCHAR)pdwValue, &ValLen);
00040 e59d0008 ldr r0, [sp, #8]
00044 e3a07004 mov r7, #4
00048 e28de00c add lr, sp, #0xC
0004c e28d3010 add r3, sp, #0x10
00050 e3a02000 mov r2, #0
00054 e1a01006 mov r1, r6
00058 e58d700c str r7, [sp, #0xC]
0005c e58de004 str lr, [sp, #4]
00060 e58d5000 str r5, [sp]
00064 eb000000 bl RegQueryValueExW
00068 e3500000 cmp r0, #0
; 81 : if (status != ERROR_SUCCESS)
; 82 : {
; 83 : DEBUGMSG(1, (TEXT("MaxReadRegDWORD: RegQueryValueEx(%s) returned %d\r\n"), szValueName, status));
; 84 : goto leave;
; 85 : }
; 86 :
; 87 : DEBUGMSG(ZONE_INIT, (_T("MaxReadRegDWORD(): %s -> %s is %d (0x%x)\r\n"), szKeyName, szValueName, *pdwValue, *pdwValue));
; 88 :
; 89 : fRet = TRUE;
0006c 03a04001 moveq r4, #1
00070 |$leave$29197|
; 90 :
; 91 : leave:
; 92 : if (hKeybd)
00070 e59d0008 ldr r0, [sp, #8]
00074 e3500000 cmp r0, #0
; 93 : {
; 94 : RegCloseKey(hKeybd);
00078 1b000000 blne RegCloseKey
; 95 : }
; 96 :
; 97 : return fRet;
0007c e1a00004 mov r0, r4
; 98 : }
00080 e28dd014 add sp, sp, #0x14
00084 e8bd40f0 ldmia sp!, {r4 - r7, lr}
00088 e12fff1e bx lr
0008c |$M29282|
ENDP ; |?MaxReadRegDWORD@@YAHPBG0PAK@Z|, MaxReadRegDWORD
IMPORT |?MaxKeybdPdd_PowerHandler@@YAXH@Z| ; MaxKeybdPdd_PowerHandler
00000 AREA |.text| { |?PS2_SA11X1_PowerHandler@@YAXIH@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?PS2_SA11X1_PowerHandler@@YAXIH@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?PS2_SA11X1_PowerHandler@@YAXIH@Z| } ; comdat associative
|$T29292| DCD |$L29291|
DCD 0x40000501
; Function compile flags: /Ogsy
00000 AREA |.text| { |?PS2_SA11X1_PowerHandler@@YAXIH@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?PS2_SA11X1_PowerHandler@@YAXIH@Z| PROC ; PS2_SA11X1_PowerHandler
; 116 : {
00000 |$L29291|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M29289|
00004 e1a00001 mov r0, r1
; 117 : MaxKeybdPdd_PowerHandler(fTurnOff);
00008 eb000000 bl |?MaxKeybdPdd_PowerHandler@@YAXH@Z|
; 118 : //RETAILMSG(1, (TEXT("PS2_SA11X1_PowerHandler fTurnOff = %d"),fTurnOff));
; 119 : }
0000c e49de004 ldr lr, [sp], #4
00010 e12fff1e bx lr
00014 |$M29290|
ENDP ; |?PS2_SA11X1_PowerHandler@@YAXIH@Z|, PS2_SA11X1_PowerHandler
IMPORT |?MaxKeybdPdd_ToggleKeyNotification@@YAXI@Z| ; MaxKeybdPdd_ToggleKeyNotification
00000 AREA |.bss| { |?ksfCurr@?1??PS2_SA11X1_ToggleLights@@YAXII@Z@4IA| }, NOINIT, SELECTION=2 ; comdat any
|?ksfCurr@?1??PS2_SA11X1_ToggleLights@@YAXII@Z@4IA| % 0x4 ; `PS2_SA11X1_ToggleLights'::`2'::ksfCurr
00000 AREA |.text| { |?PS2_SA11X1_ToggleLights@@YAXII@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?PS2_SA11X1_ToggleLights@@YAXII@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?PS2_SA11X1_ToggleLights@@YAXII@Z| } ; comdat associative
|$T29301| DCD |$L29300|
DCD 0x40000e01
; Function compile flags: /Ogsy
00000 AREA |.text| { |?PS2_SA11X1_ToggleLights@@YAXII@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?PS2_SA11X1_ToggleLights@@YAXII@Z| PROC ; PS2_SA11X1_ToggleLights
; 141 : {
00000 |$L29300|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M29298|
; 142 : static KEY_STATE_FLAGS ksfCurr;
; 143 : static const KEY_STATE_FLAGS ksfLightMask = KeyShiftCapitalFlag | KeyShiftNumLockFlag | KeyShiftScrollLockFlag;
; 144 :
; 145 : SETFNAME(_T("PS2_ToggleLights"));
; 146 :
; 147 : KEY_STATE_FLAGS ksfNewState = (ksfLightMask & KeyStateFlags);
; 148 :
; 149 : if (ksfNewState != ksfCurr)
00004 e59f5028 ldr r5, [pc, #0x28]
00008 e3a03302 mov r3, #2, 6
0000c e3833b06 orr r3, r3, #6, 22
00010 e5952000 ldr r2, [r5]
00014 e0014003 and r4, r1, r3
00018 e1540002 cmp r4, r2
0001c 0a000002 beq |$L29219|
; 150 : {
; 151 : DEBUGMSG(ZONE_PDD, (_T("%s: PDD %u: Changing light state\r\n"), pszFname, uiPddId));
; 152 : MaxKeybdPdd_ToggleKeyNotification(ksfNewState);
00020 e1a00004 mov r0, r4
00024 eb000000 bl |?MaxKeybdPdd_ToggleKeyNotification@@YAXI@Z|
; 153 : ksfCurr = ksfNewState;
00028 e5854000 str r4, [r5]
0002c |$L29219|
; 154 : }
; 155 :
; 156 : return;
; 157 : }
0002c e8bd4030 ldmia sp!, {r4, r5, lr}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -