250 likes | 387 Views
A Critical Analysis of the Windows mLAN Driver. Supervisor: Prof. Foss By: Shaun Miles. Overview. mLAN system IEEE 1394 IEC 61883 WDM DriverStudio Framework Object model IOCTL analysis Conclusion and Questions. mLAN. mLAN cont. Bus manages itself – no server
E N D
A Critical Analysis of the Windows mLAN Driver Supervisor: Prof. Foss By: Shaun Miles
Overview • mLAN system • IEEE 1394 • IEC 61883 • WDM • DriverStudio Framework • Object model • IOCTL analysis • Conclusion and Questions
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
PnP Manger I/O Manger System Registry Object Manger – system addressable memory Driver object Device Object The kernel User-mode space Application Ah, a new device This is the driver to load WIN32 API IRP 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
Kernel Streaming Minidriver • Stream Minidriver • Filter driver • Controls adapter • Stream Adapter • Controls stream • Controls hardware • Stream • Data processing of media stream
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