IRP_MJ_READ (Mouclass)
A IRP_MJ_READ request transfers data from the Mouclass input data queue to a client.
When Sent
The Microsoft Win32 subsystem sends read requests to obtain mouse input.
Input Parameters
Parameters.Read.Length member specifies the size, in bytes, of zero or more of MOUSE_INPUT_DATA structures.
Output Parameters
The AssociatedIrp.SystemBuffer member points to an output buffer that is allocated by the Win32 subsystem to output the requested number of MOUSE_INPUT_DATA structures.
I/O Status Block
The Information member specifies the number of bytes transferred to the Win32 subsystem buffer. The number of bytes that are transferred is the smaller of the requested number of bytes or the number of bytes currently in the data queue.
The Status member is set to one of the following values:
STATUS_SUCCESS
At least one MOUSE_INPUT_DATA structure was transferred.STATUS_BUFFER_TOO_SMALL
The number of requested bytes is not an integer multiple of the size, in bytes, of a MOUSE_INPUT_DATA structure.STATUS_PRIVILEGE_NOT_HELD
The requester does not have read privileges.STATUS_CANCELLED
The request was canceled before the transfer actually took place.
Operation
The IRP_MJ_READ request transfers zero or more MOUSE_INPUT_DATA structures from the internal data queue to the Win32 subsystem buffer. If there is no data in the data queue, a read request remains pending until it is completed or canceled.
The read request is not sent down the device stack and is completed by Mouclass.
A read request can be canceled. A read request is not executed if a cleanup is in progress when the request is received.
Note that a read request can be completed successfully only if it is made by a "trusted" subsystem. The Win32 subsystem is currently the only "trusted" subsystem. Mouclass performs a privilege check to enforce this restriction.
Requirements
Header |
Ntddk.h (include Wdm.h, Ntddk.h, or Wdm.h) |
See also