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