A Critical Analysis of the Windows mLAN Driver Supervisor: Prof. Foss By: Shaun Miles
Overview mLAN system WDM DriverStudio Framework Object model IEEE 1394 IEC 61883 WDM DriverStudio Framework Object model IOCTL analysis Conclusion and Questions
mLAN
mLAN cont. Bus manages itself – no server PC is useful tool – connection management Application suit Driver makes PC look like mLAN device
FireWire – IEEE 1394 Flexible serial bus Fast – good for real time multimedia Control and Status Register architecture Standardises offset locations Node – addressable entity
Asynchronous or Isochronous Asynchronous – control packets Data integrity Any time arrival Isochronous – streaming packets Continuous stream CIP – IEC 61883 Ideal for real-time systems
IEC 61883.6 High level streaming standard Audio and music data transmission Based on mLAN specification Common isochronous packet – CIP AM824 8 bit label 24 bit audio/music data
Why study the driver? To understand the driver Platform to investigate mLAN potential Model driver for future extensions Audio/video extension?
Windows Driver Model Kernel-mode vs user-mode drivers All kernel-mode drivers – WDM drivers Supports PnP – device management Driver – communication pathway – I/O Layered architecture – driver stack
IO request packet Further specifies the type of request within the major category All IRPs have a major function code Categorises type of request Target device object of the I/O request Specifies IOCTL code if has major function code of IRP_MJ_DEVICE_ CONTROL
I/O Control code Means for driver responding to IO request Custom codes for special drivers – mLAN Definable codes with handler routine Communication pathway Contained in IRP – IO request packet Use DeviceIoControl IOCTL code Handle to device - GUID Input/output buffer
DriverEntry AddDevice IRP Handler User-mode space Application Ah, a new device This is the driver to load WIN32 API I/O Manger The kernel PnP Manger System Registry Object Manger – system addressable memory Driver object IRP Device Object DriverEntry AddDevice IRP Handler New Device!!
DriverStudio Driver development tool C++ class library framework Utility classes Forms skeleton, backbone of driver Encapsulates essential driver features Used by mLAN
mLAN driver object model
Kernel Streaming Minidriver Stream Minidriver Filter driver Controls adapter Stream Adapter Controls stream Controls hardware Stream Data processing of media stream
IOCTL code handling
mLAN IOCTL codes Grouped by underlying functionality IEEE 1394 asynchronous requests IEEE 1394 isochronous streaming IEC 61883 ASIO – Audio Streaming Input Output WDM Streaming (KS)
WDM Streaming (KS) Inter-driver communication KS Minidriver to mLAN
ASIO Implements ASIO driver functionality Overrides ASIO classes Used by applications for audio record and playback
Asynchronous IEEE 1394 Asynchronous communication with bus via Firewire bus driver Allocate/deallocate bus resources Channel Bandwidth Address range Driver state information
Isochronous IEEE 1394 Allocate/deallocate stream resource Start stream creates WDM minidriver to control stream Make several requests to Firewire driver to service initial request
61883 Uses 61883 protocol driver Formatting of stream data Used for plug modelling and connectivity Plug – input/output Start/end point of stream
Conclusion Driver is clearly structured Modules based on functionality Compilation problems due to incompatability issues Analysis done manually, time consuming and messy Missed out on powerful debugging tool
Questions? Thank you