locked
Clarification about drivers RRS feed

  • Question

  • Hello everybody,

    This is a question about drivers general behaviour. I read carefully the related Microsoft Documentation, so I am familiar with terms like device node, device stack, driver stack etc. Anyway, I feel like I'm missing some important points to complete my understanding.

    Unfortunately I cannot post useful images, since my account has not been verified yet. If it will be in future, I will post them.


    CASE 1: PC to Device Communication

    General communication between one PC running Windows and a generic device, e.g. keyboard.

    In particular, let's suppose that two different buses are involved in data transfers: BUS 1 and BUS 2. BUS 1 is directly connected to the PC, while BUS 2 is directly connected to the device. The "Bus change" is performed by a (BUS 1 to BUS 2) controller.

    In this case, for my understanding, the following are the drivers that surely need to be loaded by Windows:

    1) BUS 1 Controller Driver ("Bus Driver")

    2) (Bus 1 to Bus 2) Controller Deiver ("Bus Driver")

    3) Device driver (function driver)

    These three drivers then deal with the construction of the device stack for the device. All of them run on the PC (Windows), of course.


    Are my assumptions correct at this stage? Please correct me for any mistake.




    CASE 2: PC to PC Communication



    Now we have communication between two PCs (PC1 and PC2), both running Windows. I know that the logic of data transfer is ruled by OSI model, but I would like to analyze the problem under drivers perspective.

    Let's suppose that, as it was for CASE 1, two different buses are involved: BUS 1 (directly connected to PC1) and BUS 2 (directly connected to PC2). Again, the "Bus change" is performed by the (BUS 1 to BUS 2) controller.

    In this scenario, I suppose that the drivers involved in data transfers are the following:


    1) BUS 1 Controller Driver ("Bus Driver") --> It runs on PC 1

    2) BUS 2 Controller Driver ("Bus Driver") --> It runs on PC 2

    2) (Bus 1 to Bus 2) Controller Deiver ("Bus Driver") --> Where does it run?


    As you can see, I am not able to say which is the PC on which the (BUS 1 to BUS 2) Controller Driver runs.

    As a consequence, I am not able to represent the device stacks for both PCs.


    I hope I made myself clear enough. Please tell me otherwise.


    Could anybody please help me understand?


    Thank you

    Regards

    Federico



    Monday, May 28, 2018 11:48 PM

Answers

All replies

  • It was you who asked Device Drivers and OSI model - Cisco Support Community, right? I did a little research to help me with a response and I found that. I think that one thing that should be clarified is that the OSI model applies only to networks, not all devices. And keyboard devices work differently from what I think you think. For Windows especially, the keyboard driver reads the keys asynchronously with the application and even the rest of the operating system. The driver reads keys when the keyboard sends them. Then it puts the data in a stack and then when an application requests keyboard data the driver just gets the data from the stack. I don't know the details (I once knew more and quickly forgot it) but it si more complicated than you think.

    I am not as qualified as others to respond here but are you sure that the term "bus" is adequately clear? I think it is a very general term without a specific definition in this context.

    By definition of the OSI model, a device driver operates within one layer only. Layer 1 is the hardware. See Windows Network Architecture and the OSI Model (Windows Drivers); it describes at least three drivers, two for the Data Link Layer and one for the Transport Layer.




    Sam Hobbs
    SimpleSamples.Info

    Tuesday, May 29, 2018 12:39 AM
  • Hello Sam,

    First of all... thanks for the reply.

    Yes I am the same person who asked that question about OSI model and drivers, on that other forum.

    I understand your explanation about OSI model and I thank you for that, but in this case my question (as you can see) is not strictly related to this model.

    I know peripheral devices work asynchronously with respect to applications. I am surely not an expert, but as I said I have read carefully much of Microsoft documentation about drivers. For example, here:


    https://docs.microsoft.com/en-us/windows-hardware/drivers/gettingstarted/device-nodes-and-device-stacks


    I found a great explanation about the way device stacks get constructed and about the role of the so called "Bus drivers" in this scenario. In this sense, and according to this explanation, the term "bus" seems clear to me.


    So my question is: what happens with drivers, when the communication is PC - PC  (not PC - Device)?

    Practical example:

    Two PCs have to communicate together as follows:

    1) PC 1 has to use its Ethernet interface

    2) PC 2 has to use its Wifi interface

    3)The communication between the two different interfaces is provided by a (Wifi to Ethernet) adaptor.


    I guess this could effectively happen in reality. These are my assumptions:

    1) Drivers related to Ethernet interface (PC 1) runs on PC 1

    2) Drivers related to Wifi interface (PC 2) run in PC 2

    Questions:

    1) On which PC does the (Wifi to Ethernet) adaptor driver run?

    2) What are the driver stacks for the two PCs?

    I hope I made myself clearer

    Thank you in advance

    Federico












    Tuesday, May 29, 2018 9:59 PM
  • off topic for thid forum
    Tuesday, June 5, 2018 6:24 AM
    Answerer