USB Function Mass Storage Client Driver Execution Sequence (Windows Embedded CE 6.0)
1/6/2010
The following list shows the execution sequence of a USB mass storage class request through the USB mass storage class driver:
- The USB function controller driver notifies the transport of the arrival of a setup token packet.
- The transport reads the setup token packet to determine that the host has sent a USB mass storage class request.
It does this through the USB function controller driver. - The transport collects the command. It does this through subsequent DATA_IN transfers. The transport uses STORE_IsCommandSupported to determine if the SCSI-2 direct-access device emulator supports the command.
- If the emulator does not support the command, then the transport fails the command during the status stage of the command transport or control transfer.
- If the emulator does support the command, and the command represents the delivery of data to the device, then the transport receives the data associated with the command, and then executes the command. The transport does this through subsequent DATA_OUT transfers of the data transport.
- If the emulator does support the command, and the command represents the delivery of data to the host, then the transport executes the command and sends the data associated with the command to the host. The transport does this through subsequent IN transfers of the data transport
- The proxy instructs the SCSI-2 direct-access device emulator to execute a command.
- If the emulator does not support the command, it returns FALSE.
- If the emulator does support the command, the SCSI-2 direct-access device emulator translates the command as necessary, and executes or emulates the command.
- If the command fails to execute, then the proxy returns FALSE.
The following table shows the results of command execution paths.
Command support | Execution result | Function and return value |
---|---|---|
Supported |
Success |
STORE_IsCommandSupported returns TRUE. STORE_ExecuteCommand returns TRUE. |
Supported |
Failure |
STORE_IsCommandSupported returns TRUE. STORE_ExecuteCommand returns FALSE. |
Unsupported |
Failure |
STORE_IsCommandSupported returns FALSE. STORE_ExecuteCommand returns FALSE. |
After the data transport stage, the host requests that the USB mass storage class driver return the status of the request in a status transport. The transport replies appropriately.
See Also
Concepts
USB Function Mass Storage Client Driver Development Concepts
USB Function Mass Storage Client Driver