mouclass!MouseClassReadCopyData函数的两种情况

if ((bytesToMove - moveSize) > 0) {

//

// moveSize <- Remaining number bytes to move.

//

moveSize = bytesToMove - moveSize;

//

// Move the bytes from the class input data queue to SystemBuffer.

//

MouPrint((

3,

"MOUCLASS-MouseClassCopyReadData: number of bytes in second move 0x%lx\n",

moveSize

));

MouPrint((

3,

"MOUCLASS-MouseClassCopyReadData: move bytes from 0x%lx to 0x%lx\n",

(PCHAR) DeviceExtension->InputData,

destination

));

RtlMoveMemory(

destination,

(PCHAR) DeviceExtension->InputData,

moveSize

);

//

// Update the class input data queue removal pointer.

//

DeviceExtension->DataOut = (PMOUSE_INPUT_DATA)

(((PCHAR) DeviceExtension->InputData) + moveSize);

}

else {

//

// Update the input data queue removal pointer.

//

DeviceExtension->DataOut = (PMOUSE_INPUT_DATA)

(((PCHAR) DeviceExtension->DataOut) + moveSize);

}

data4 data5 data6 data7 data01 data02 data03

IN OUT

需要移动5个数据,先移动3个数据,然后在移动2个数据。

data1 data2 data3 data4 data5 data6 data7 data8

OUT IN

需要移动5个数据,直接移动5个数据,OUT+18*5

相关推荐
sitelist1 个月前
mouclass!MousePnP调试记录被调用了好多次
mouclass·mousepnp
sitelist1 个月前
mouclass!MouseClassReadCopyData调试记录实体机器ps2鼠标--server03调试指南
mouseclassread
sitelist1 个月前
MOUCLASS-MouseClassServiceCallback调试记录之两种情况
callback·mouseclassservi·mouclass
sitelist1 个月前
mouclass!MouseClassReadCopyData和win32k!QueueMouseEvent函数调试如何算检测到鼠标双击事件
鼠标双击·mouseclassread·queuemouseevent