diff -r 578be2adaf3e -r 307f4279f433 Adaptation/GUID-CFE0A4EB-845C-43B6-A732-AA155AFD99D6.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Adaptation/GUID-CFE0A4EB-845C-43B6-A732-AA155AFD99D6.dita Fri Oct 15 14:32:18 2010 +0100 @@ -0,0 +1,41 @@ + + + + + +User +Requests and SynchronisationThis document introduces user requests and synchronisation methods +used by device drivers. +
Types +of user request

User-side requests to a driver can be of +three types: synchronous, asynchronous, and cancellation of an asynchronous +request. User requests can be handled in two different ways, based on the +logical channel model used by the device driver. A channel implementation +is derived from either:

    +
  • DLogicalChannelBase: +the driver developer decides how a request is handled.

  • +
  • DLogicalChannel: +this is derived from DLogicalChannelBase, and implements +a basic mechanism for handling requests.

  • +

In the DLogicalChannel derived model, requests from +user threads to the driver are queued as messages and handled sequentially +by a single Kernel side DFC. This is the model described in this section. +More details on the differences between the models can be found inLogical +Channel documentation.

All requests from the user result in +a call to a single function DLogicalChannelBase::Request(). +In this function the driver determines the type of the request, i.e. synchronous, +asynchronous, or cancel, and implements handling of the requests.

+
+
Synchronisation +methods

A driver uses the following synchronisation methods.

    +
  • Deferred Function Calls
  • +
  • Timers
  • +
  • Generated Events
  • +
+
\ No newline at end of file