35 the API functions need to do more complex tasks, then they can be implemented |
35 the API functions need to do more complex tasks, then they can be implemented |
36 in their own DLL. The kernel also provides a API <xref href="GUID-92BAC78E-8ACF-3952-8E77-CCF93ED3BDC9.dita"><apiname>RDevice</apiname></xref>, |
36 in their own DLL. The kernel also provides a API <xref href="GUID-92BAC78E-8ACF-3952-8E77-CCF93ED3BDC9.dita"><apiname>RDevice</apiname></xref>, |
37 which enables user side code to get information about a device. </p> <p>The |
37 which enables user side code to get information about a device. </p> <p>The |
38 following diagram shows the general idea: </p><fig id="GUID-CB291406-75EC-572E-8A21-280A5F0A6B9E"> |
38 following diagram shows the general idea: </p><fig id="GUID-CB291406-75EC-572E-8A21-280A5F0A6B9E"> |
39 <title> Device driver LDD/PDD model </title> |
39 <title> Device driver LDD/PDD model </title> |
40 <image href="GUID-6EB38F10-849D-5763-96A0-A0A108982D67_d0e293041_href.png" placement="inline"/> |
40 <image href="GUID-6EB38F10-849D-5763-96A0-A0A108982D67_d0e291028_href.png" placement="inline"/> |
41 </fig><p>To make porting to particular hardware platforms easier, some drivers |
41 </fig><p>To make porting to particular hardware platforms easier, some drivers |
42 make a further logical split in their PDD code between a platform-independent |
42 make a further logical split in their PDD code between a platform-independent |
43 layer (PIL), which contains code that is common to all the hardware platforms |
43 layer (PIL), which contains code that is common to all the hardware platforms |
44 that the driver could be deployed on, and a platform-specific layer (PSL), |
44 that the driver could be deployed on, and a platform-specific layer (PSL), |
45 which contains code such as the reading and writing of hardware-specific registers. </p> <p>Depending |
45 which contains code such as the reading and writing of hardware-specific registers. </p> <p>Depending |