阳江市网站建设_网站建设公司_表单提交_seo优化
2025/12/23 11:46:08 网站建设 项目流程

win32k!ProcessMouseInput函数里的win32k!GetMouseCoord函数分析--绝对坐标如何计算

Breakpoint 1 hit
win32k!ProcessMouseInput:
bf8e9149 55 push ebp
0: kd> dv
pMouseInfo = 0xe162bd40
ptLastMove = {x=-1081175735 y=8}
0: kd> dx -r1 ((win32k!tagDEVICEINFO *)0xe162bd40)
((win32k!tagDEVICEINFO *)0xe162bd40) : 0xe162bd40 [Type: tagDEVICEINFO *]
[+0x000] head [Type: _HEAD]
[+0x008] pNext : 0xe1414eb8 [Type: tagDEVICEINFO *]
[+0x00c] type : 0x0 [Type: unsigned char]
[+0x00d] bFlags : 0x2 [Type: unsigned char]
[+0x00e] usActions : 0x0 [Type: unsigned short]
[+0x010] nRetryRead : 0x0 [Type: unsigned char]
[+0x014] ustrName : "\??\HID#Vid_0e0f&Pid_0003&MI_00#8&28f6544d&0&0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}" [Type: _UNICODE_STRING]
[+0x01c] handle : 0x21c [Type: void *]
[+0x020] NotificationEntry : 0xe13e70c0 [Type: void *]
[+0x024] pkeHidChangeCompleted : 0x897fb9c0 [Type: _KEVENT *]
[+0x028] iosb [Type: _IO_STATUS_BLOCK]
[+0x030] ReadStatus : 0 [Type: long]
[+0x034] OpenerProcess : 0x1b0 [Type: void *]
[+0x038] OpenStatus : 0 [Type: long]
[+0x03c] AttrStatus : 0 [Type: long]
[+0x040] timeStartRead : 0xffcab7b3 [Type: unsigned long]
[+0x044] timeEndRead : 0xffcab83b [Type: unsigned long]
[+0x048] nReadsOutstanding : 0 [Type: int]
[+0x04c] mouse [Type: tagMOUSE_DEVICE_INFO]
[+0x04c] keyboard [Type: tagKEYBOARD_DEVICE_INFO]
[+0x04c] hid [Type: tagHID_DEVICE_INFO]
0: kd> dx -r1 (*((win32k!tagMOUSE_DEVICE_INFO *)0xe162bd8c))
(*((win32k!tagMOUSE_DEVICE_INFO *)0xe162bd8c)) [Type: tagMOUSE_DEVICE_INFO]
[+0x000] Attr [Type: _MOUSE_ATTRIBUTES]
[+0x00c] Data [Type: _MOUSE_INPUT_DATA [10]]
0: kd> dx -r1 (*((win32k!_IO_STATUS_BLOCK *)0xe162bd68))
(*((win32k!_IO_STATUS_BLOCK *)0xe162bd68)) [Type: _IO_STATUS_BLOCK]
[+0x000] Status : 0 [Type: long]
[+0x000] Pointer : 0x0 [Type: void *]
[+0x004] Information : 0x48 [Type: unsigned long]
0: kd> dx -r1 (*((win32k!tagMOUSE_DEVICE_INFO *)0xe162bd8c))
(*((win32k!tagMOUSE_DEVICE_INFO *)0xe162bd8c)) [Type: tagMOUSE_DEVICE_INFO]
[+0x000] Attr [Type: _MOUSE_ATTRIBUTES]
[+0x00c] Data [Type: _MOUSE_INPUT_DATA [10]]
0: kd> dx -r1 (*((win32k!_MOUSE_INPUT_DATA (*)[10])0xe162bd98))
(*((win32k!_MOUSE_INPUT_DATA (*)[10])0xe162bd98)) [Type: _MOUSE_INPUT_DATA [10]]
[0] [Type: _MOUSE_INPUT_DATA]
[1] [Type: _MOUSE_INPUT_DATA]
[2] [Type: _MOUSE_INPUT_DATA]
[3] [Type: _MOUSE_INPUT_DATA]
[4] [Type: _MOUSE_INPUT_DATA]
[5] [Type: _MOUSE_INPUT_DATA]
[6] [Type: _MOUSE_INPUT_DATA]
[7] [Type: _MOUSE_INPUT_DATA]
[8] [Type: _MOUSE_INPUT_DATA]
[9] [Type: _MOUSE_INPUT_DATA]
0: kd> dx -r1 (*((win32k!_MOUSE_INPUT_DATA *)0xe162bd98))
(*((win32k!_MOUSE_INPUT_DATA *)0xe162bd98)) [Type: _MOUSE_INPUT_DATA]
[+0x000] UnitId : 0x1 [Type: unsigned short]
[+0x002] Flags : 0x1 [Type: unsigned short]
[+0x004] Buttons : 0x0 [Type: unsigned long]
[+0x004] ButtonFlags : 0x0 [Type: unsigned short]
[+0x006] ButtonData : 0x0 [Type: unsigned short]
[+0x008] RawButtons : 0x0 [Type: unsigned long]
[+0x00c] LastX : 31134 [Type: long]
[+0x010] LastY : 40232 [Type: long]
[+0x014] ExtraInformation : 0x0 [Type: unsigned long]
0: kd> dx -r1 (*((win32k!_MOUSE_INPUT_DATA *)0xe162bdb0))
(*((win32k!_MOUSE_INPUT_DATA *)0xe162bdb0)) [Type: _MOUSE_INPUT_DATA]
[+0x000] UnitId : 0x1 [Type: unsigned short]
[+0x002] Flags : 0x1 [Type: unsigned short]
[+0x004] Buttons : 0x0 [Type: unsigned long]
[+0x004] ButtonFlags : 0x0 [Type: unsigned short]
[+0x006] ButtonData : 0x0 [Type: unsigned short]
[+0x008] RawButtons : 0x0 [Type: unsigned long]
[+0x00c] LastX : 31134 [Type: long]
[+0x010] LastY : 40232 [Type: long]
[+0x014] ExtraInformation : 0x0 [Type: unsigned long]
0: kd> dx -r1 (*((win32k!_MOUSE_INPUT_DATA *)0xe162bde0))
(*((win32k!_MOUSE_INPUT_DATA *)0xe162bde0)) [Type: _MOUSE_INPUT_DATA]
[+0x000] UnitId : 0x1 [Type: unsigned short]
[+0x002] Flags : 0x1 [Type: unsigned short]
[+0x004] Buttons : 0x0 [Type: unsigned long]
[+0x004] ButtonFlags : 0x0 [Type: unsigned short]
[+0x006] ButtonData : 0x0 [Type: unsigned short]
[+0x008] RawButtons : 0x0 [Type: unsigned long]
[+0x00c] LastX : 37468 [Type: long]
[+0x010] LastY : 32466 [Type: long]
[+0x014] ExtraInformation : 0x0 [Type: unsigned long]

1: kd> t
win32k!GetMouseCoord:
bf8e4abc 55 push ebp
1: kd> dv
dx = 0n31134
dy = 0n40232
dwFlags = 1
time = 0n-3491468
ExtraInfo = 0
ppt = 0xbab9a8d0 {x=507 y=455}
1: kd> p
win32k!GetMouseCoord+0x3:
bf8e4abf f6451001 test byte ptr [ebp+10h],1
1: kd> p
win32k!GetMouseCoord+0xe:
bf8e4aca 8b7510 mov esi,dword ptr [ebp+10h]
1: kd> p
win32k!GetMouseCoord+0x14:
bf8e4ad0 a19806a7bf mov eax,dword ptr [win32k!gpsi (bfa70698)]
1: kd> p
win32k!GetMouseCoord+0x19:
bf8e4ad5 740e je win32k!GetMouseCoord+0x29 (bf8e4ae5)
1: kd> p
win32k!GetMouseCoord+0x29:
bf8e4ae5 8b88c0050000 mov ecx,dword ptr [eax+5C0h]
1: kd> p
win32k!GetMouseCoord+0x2f:
bf8e4aeb 8b80c4050000 mov eax,dword ptr [eax+5C4h]
1: kd> r
eax=bc610c9c ebx=ffcab974 ecx=00000400 edx=00000001 esi=00000000 edi=e162bdb0
eip=bf8e4aeb esp=bab9a8a0 ebp=bab9a8a4 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
win32k!GetMouseCoord+0x2f:
bf8e4aeb 8b80c4050000 mov eax,dword ptr [eax+5C4h] ds:0023:bc611260=00000300
1: kd> x win32k!gpsi
bfa70698 win32k!gpsi = 0xbc610c9c
1: kd> dx -r1 ((win32k!tagSERVERINFO *)0xbc610c9c)
((win32k!tagSERVERINFO *)0xbc610c9c) : 0xbc610c9c [Type: tagSERVERINFO *]
[+0x000] dwSRVIFlags : 0x101 [Type: unsigned long]
[+0x004] cHandleEntries : 0x100 [Type: unsigned long]
[+0x008] mpFnidPfn [Type: long (* [32])(tagWND *,unsigned int,unsigned int,long,unsigned long)]
[+0x088] aStoCidPfn [Type: long (* [7])(tagWND *,unsigned int,unsigned int,long)]
[+0x0a4] mpFnid_serverCBWndProc [Type: unsigned short [31]]
[+0x0e4] apfnClientA [Type: _PFNCLIENT]
[+0x13c] apfnClientW [Type: _PFNCLIENT]
[+0x194] apfnClientWorker [Type: _PFNCLIENTWORKER]
[+0x1b8] cbHandleTable : 0x1000 [Type: unsigned long]
[+0x1bc] atomSysClass [Type: unsigned short [23]]
[+0x1ec] dwDefaultHeapBase : 0x0 [Type: unsigned long]
[+0x1f0] dwDefaultHeapSize : 0x300000 [Type: unsigned long]
[+0x1f4] uiShellMsg : 0xc02a [Type: unsigned int]
[+0x1f8] wMaxBtnSize : 0x4b [Type: unsigned int]
[+0x1fc] MBStrings [Type: tagMBSTRING [11]]
[+0x3b4] atomIconSmProp : 0xc028 [Type: unsigned short]
[+0x3b6] atomIconProp : 0xc029 [Type: unsigned short]
[+0x3b8] atomContextHelpIdProp : 0xc027 [Type: unsigned short]
[+0x3ba] acOemToAnsi : "" [Type: char [256]]
[+0x4ba] acAnsiToOem : "" [Type: char [256]]
[+0x5bc] dwInstalledEventHooks : 0x0 [Type: unsigned long]
[+0x5c0] aiSysMet [Type: int [88]]
[+0x720] argbSystemUnmatched [Type: unsigned long [31]]
[+0x79c] argbSystem [Type: unsigned long [31]]
[+0x818] ahbrSystem [Type: HBRUSH__ * [31]]
[+0x894] hbrGray : 0x1100078 [Type: HBRUSH__ *]
[+0x898] ptCursor : {x=507 y=455} [Type: tagPOINT]
[+0x8a0] dwLastRITEventTickCount : 0xffcab8f7 [Type: unsigned long]
[+0x8a4] nEvents : 0 [Type: int]
[+0x8a8] gclBorder : 1 [Type: int]
[+0x8ac] dtScroll : 0x190 [Type: unsigned int]
[+0x8b0] dtLBSearch : 0x7d0 [Type: unsigned int]
[+0x8b4] dtCaretBlink : 0x212 [Type: unsigned int]
[+0x8b8] ucWheelScrollLines : 0x3 [Type: unsigned int]
[+0x8bc] wMaxLeftOverlapChars : 3 [Type: int]
[+0x8c0] wMaxRightOverlapChars : 3 [Type: int]
[+0x8c4] cxSysFontChar : 8 [Type: int]
[+0x8c8] cySysFontChar : 16 [Type: int]
[+0x8cc] cxMsgFontChar : 6 [Type: int]
[+0x8d0] cyMsgFontChar : 13 [Type: int]
[+0x8d4] tmSysFont [Type: tagTEXTMETRICW]
[+0x910] hIconSmWindows : 0x10025 [Type: HICON__ *]
[+0x914] hIcoWindows : 0x10031 [Type: HICON__ *]
[+0x918] hCaptionFont : 0x10a0113 [Type: HFONT__ *]
[+0x91c] hMsgFont : 0x20a0102 [Type: HFONT__ *]
[+0x920] dwKeyCache : 0x116 [Type: unsigned long]
[+0x924] dwAsyncKeyCache : 0x70 [Type: unsigned long]
[+0x928] cCaptures : 0x0 [Type: unsigned long]
[+0x92c] oembmi [Type: tagOEMBITMAPINFO [93]]
[+0xefc] rcScreen : {LT(0, 0) RB(1024, 768) [1024 x 768]} [Type: tagRECT]
[+0xf0c] BitCount : 0x20 [Type: unsigned short]
[+0xf0e] dmLogPixels : 0x60 [Type: unsigned short]
[+0xf10] Planes : 0x1 [Type: unsigned char]
[+0xf11] BitsPixel : 0x20 [Type: unsigned char]
[+0xf14] PUSIFlags : 0x8000000c [Type: unsigned long]
[+0xf18] uCaretWidth : 0x1 [Type: unsigned int]
[+0xf1c] UILangID : 0x409 [Type: unsigned short]
[+0xf20] dwLastSystemRITEventTickCountUpdate : 0xffca7fc6 [Type: unsigned long]
[+0xf24] adwDBGTAGFlags [Type: unsigned long [25]]
[+0xf88] dwTagCount : 0x17 [Type: unsigned long]
[+0xf8c] dwRIPFlags : 0x31 [Type: unsigned long]
1: kd> dx -r1 (*((win32k!int (*)[88])0xbc61125c))
(*((win32k!int (*)[88])0xbc61125c)) [Type: int [88]]
[0] : 1024 [Type: int]
[1] : 768 [Type: int]


ppt->x = dx * cxMetric; ecx=01e67800

1: kd> p
win32k!GetMouseCoord+0x35:
bf8e4af1 0faf4d08 imul ecx,dword ptr [ebp+8]
1: kd> r
eax=00000300 ebx=ffcab974 ecx=00000400 edx=00000001 esi=00000000 edi=e162bdb0
eip=bf8e4af1 esp=bab9a8a0 ebp=bab9a8a4 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
win32k!GetMouseCoord+0x35:
bf8e4af1 0faf4d08 imul ecx,dword ptr [ebp+8] ss:0010:bab9a8ac=0000799e
1: kd> dv
dx = 0n31134
dy = 0n40232
dwFlags = 1
time = 0n-3491468
ExtraInfo = 0
ppt = 0xbab9a8d0 {x=507 y=455}
1: kd> ?0n31134
Evaluate expression: 31134 = 0000799e
1: kd> ?400*799e
Evaluate expression: 31881216 = 01e67800
1: kd> pr
eax=00000300 ebx=ffcab974 ecx=01e67800 edx=00000001 esi=00000000 edi=e162bdb0
eip=bf8e4af5 esp=bab9a8a0 ebp=bab9a8a4 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
win32k!GetMouseCoord+0x39:
bf8e4af5 85c9 test ecx,ecx

ppt->x = dx * cxMetric;
if (ppt->x >= 0) {
ppt->x = HIWORD(ppt->x); ecx=000001e6
}

1: kd> pr
eax=00000300 ebx=ffcab974 ecx=01e67800 edx=00000001 esi=00000000 edi=e162bdb0
eip=bf8e4af5 esp=bab9a8a0 ebp=bab9a8a4 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
win32k!GetMouseCoord+0x39:
bf8e4af5 85c9 test ecx,ecx
1: kd> p
eax=00000300 ebx=ffcab974 ecx=01e67800 edx=00000001 esi=00000000 edi=e162bdb0
eip=bf8e4af7 esp=bab9a8a0 ebp=bab9a8a4 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
win32k!GetMouseCoord+0x3b:
bf8e4af7 8b551c mov edx,dword ptr [ebp+1Ch] ss:0010:bab9a8c0=bab9a8d0
1: kd> p
eax=00000300 ebx=ffcab974 ecx=01e67800 edx=bab9a8d0 esi=00000000 edi=e162bdb0
eip=bf8e4afa esp=bab9a8a0 ebp=bab9a8a4 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
win32k!GetMouseCoord+0x3e:
bf8e4afa 890a mov dword ptr [edx],ecx ds:0023:bab9a8d0=000001fb
1: kd> pp
^ pass count must be preceeded by whitespace error in 'pp'
1: kd> p
eax=00000300 ebx=ffcab974 ecx=01e67800 edx=bab9a8d0 esi=00000000 edi=e162bdb0
eip=bf8e4afc esp=bab9a8a0 ebp=bab9a8a4 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
win32k!GetMouseCoord+0x40:
bf8e4afc 7c05 jl win32k!GetMouseCoord+0x47 (bf8e4b03) [br=0]
1: kd> p
eax=00000300 ebx=ffcab974 ecx=01e67800 edx=bab9a8d0 esi=00000000 edi=e162bdb0
eip=bf8e4afe esp=bab9a8a0 ebp=bab9a8a4 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
win32k!GetMouseCoord+0x42:
bf8e4afe c1e910 shr ecx,10h
1: kd> p
eax=00000300 ebx=ffcab974 ecx=000001e6 edx=bab9a8d0 esi=00000000 edi=e162bdb0
eip=bf8e4b01 esp=bab9a8a0 ebp=bab9a8a4 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
win32k!GetMouseCoord+0x45:
bf8e4b01 eb07 jmp win32k!GetMouseCoord+0x4e (bf8e4b0a)

ppt->y = dy * cyMetric;
if (ppt->y >= 0) {
ppt->y = HIWORD(ppt->y); eax=000001d7
} else {
ppt->y = - (long) HIWORD(-ppt->y);
}

1: kd> p
eax=01d77800 ebx=ffcab974 ecx=000001e6 edx=bab9a8d0 esi=00000000 edi=e162bdb0
eip=bf8e4b0e esp=bab9a8a0 ebp=bab9a8a4 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
win32k!GetMouseCoord+0x52:
bf8e4b0e 85c0 test eax,eax
1: kd> p
eax=01d77800 ebx=ffcab974 ecx=000001e6 edx=bab9a8d0 esi=00000000 edi=e162bdb0
eip=bf8e4b10 esp=bab9a8a0 ebp=bab9a8a4 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
win32k!GetMouseCoord+0x54:
bf8e4b10 890a mov dword ptr [edx],ecx ds:0023:bab9a8d0=01e67800
1: kd> p
eax=01d77800 ebx=ffcab974 ecx=000001e6 edx=bab9a8d0 esi=00000000 edi=e162bdb0
eip=bf8e4b12 esp=bab9a8a0 ebp=bab9a8a4 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
win32k!GetMouseCoord+0x56:
bf8e4b12 894204 mov dword ptr [edx+4],eax ds:0023:bab9a8d4=000001c7
1: kd> p
eax=01d77800 ebx=ffcab974 ecx=000001e6 edx=bab9a8d0 esi=00000000 edi=e162bdb0
eip=bf8e4b15 esp=bab9a8a0 ebp=bab9a8a4 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
win32k!GetMouseCoord+0x59:
bf8e4b15 7c05 jl win32k!GetMouseCoord+0x60 (bf8e4b1c) [br=0]
1: kd> p
eax=01d77800 ebx=ffcab974 ecx=000001e6 edx=bab9a8d0 esi=00000000 edi=e162bdb0
eip=bf8e4b17 esp=bab9a8a0 ebp=bab9a8a4 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
win32k!GetMouseCoord+0x5b:
bf8e4b17 c1e810 shr eax,10h
1: kd> p
eax=000001d7 ebx=ffcab974 ecx=000001e6 edx=bab9a8d0 esi=00000000 edi=e162bdb0
eip=bf8e4b1a esp=bab9a8a0 ebp=bab9a8a4 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
win32k!GetMouseCoord+0x5e:
bf8e4b1a eb07 jmp win32k!GetMouseCoord+0x67 (bf8e4b23)

1: kd> dv
dx = 0n31134
dy = 0n40232
dwFlags = 1
time = 0n-3491468
ExtraInfo = 0
ppt = 0xbab9a8d0 {x=486 y=471}
1: kd> dx -r1 ((win32k!tagPOINT *)0xbab9a8d0)
((win32k!tagPOINT *)0xbab9a8d0) : 0xbab9a8d0 : {x=486 y=471} [Type: tagPOINT *]
[<Raw View>] [Type: tagPOINT]
1: kd> dx -r1 -nv (*((win32k!tagPOINT *)0xbab9a8d0))
(*((win32k!tagPOINT *)0xbab9a8d0)) : {x=486 y=471} [Type: tagPOINT]
[+0x000] x : 486 [Type: long]
[+0x004] y : 471 [Type: long]


1: kd> ?000001e6
Evaluate expression: 486 = 000001e6
1: kd> ?1d7
Evaluate expression: 471 = 000001d7


/*
* (0, 0) must map to the leftmost point on the desktop
*/
if (dwFlags & MOUSE_VIRTUAL_DESKTOP) {
ppt->x += SYSMET(XVIRTUALSCREEN);
ppt->y += SYSMET(YVIRTUALSCREEN);
}

//
// Define the mouse indicator flags.
//

#define MOUSE_MOVE_RELATIVE 0
#define MOUSE_MOVE_ABSOLUTE 1
#define MOUSE_VIRTUAL_DESKTOP 0x02 // the coordinates are mapped to the virtual desktop
#define MOUSE_ATTRIBUTES_CHANGED 0x04 // requery for mouse attributes


/*
* Save the absolute coordinates in the global array
* for GetMouseMovePointsEx.
*/
SAVEPOINT(dx, dy, 0xFFFF, 0xFFFF, time, ExtraInfo);

1: kd> p
eax=00000180 ebx=ffcab974 ecx=00000019 edx=00000000 esi=e162bd98 edi=e162bdb0
eip=bf8e4ca2 esp=bab9a8a4 ebp=bab9a8a4 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
win32k!GetMouseCoord+0x1e6:
bf8e4ca2 5d pop ebp
1: kd> p
eax=00000180 ebx=ffcab974 ecx=00000019 edx=00000000 esi=e162bd98 edi=e162bdb0
eip=bf8e937f esp=bab9a8c4 ebp=bab9a8d8 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
win32k!ProcessMouseInput+0x236:
bf8e937f 33c0 xor eax,eax


1: kd> dv ptLastMove
ptLastMove = {x=486 y=471}


if (pmei->LastX || pmei->LastY) {

/*
* Get the actual point that will be injected.
*/
GetMouseCoord(pmei->LastX,
pmei->LastY,
pmei->Flags,
time,
pmei->ExtraInformation,
&ptLastMove);

1: kd> dv ptLastMove
ptLastMove = {x=486 y=471}


1: kd> g
Breakpoint 2 hit
eax=00000000 ebx=ffcabba6 ecx=bc510013 edx=00000100 esi=e162bdc8 edi=00000000
eip=bf8e7542 esp=bab9a898 ebp=bab9a8d8 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
win32k!QueueMouseEvent:
bf8e7542 55 push ebp
1: kd> dv
ButtonFlags = 0
ButtonData = 0
ExtraInfo = 0
ptMouse = {x=486 y=471}
time = 0n-3490906

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询