How do design my Windows Driver development architecture

sheng 20 Reputation points
2023-07-09T16:13:56.91+00:00

Hi Microsoft team,

My Question: Can I make only one Custom bus type driver for multi-function witch use different device?

For example, my Custom bus type device( there is no hardware physical bus at all) have the functions accelerometer/ motor/ video. But during PnP, the virtual device could not reports these functions respective . My goal is to see the sperate device in device manage. I have no idea about this case. Could somebody give me some suggestions?

Detail:

I want to implement a driver (F.sys) which controls the accelerometer(i2c-device)/motor(spi-device) , and then the App on the OS can use this F.sys to control the acceleration sensor, motor and other devices...  

Want to use WDM multifunction device development model. But there are a few questions:

  1. To my multifunctional device has no actual physical bus, and can only build a bus type (virtual PDO FDO of a multifunctional device)
  2. In this way, each device (Accelerators/motor) must have its own Function driver (b.sys, c.sys) to create own FDO device, which does not meet the requirement of only one sys to export. Can we put the b.sys or c.sys implementation into F.sys ? But it feels weird.
  3. Or should I not have chosen this design? So how do you design it, or is there a better way

BR

Curry

Windows for business | Windows Client for IT Pros | Devices and deployment | Other
0 comments No comments
{count} votes

Accepted answer
  1. Limitless Technology 44,766 Reputation points
    2023-07-10T14:24:57.0333333+00:00

    Hello there,

    Designing a Windows driver development architecture involves several considerations and steps. Here is a high-level outline of the process:

    Understand Driver Development Concepts: Familiarize yourself with the concepts of Windows driver development, such as kernel-mode and user-mode drivers, driver models (WDM, KMDF, UMDF), driver frameworks, and Windows Driver Model (WDM) specifications.

    Define Driver Requirements: Determine the requirements of your driver, including its purpose, supported hardware devices, desired features, and performance considerations. Identify any specific interfaces, APIs, or protocols your driver needs to interact with.

    Choose the Driver Model/Framework: Select an appropriate driver model/framework based on your requirements. Windows provides various frameworks, such as WDM (Windows Driver Model), KMDF (Kernel-Mode Driver Framework), and UMDF (User-Mode Driver Framework). Each framework has its own advantages and target scenarios.

    Plan for Driver Deployment: Determine how your driver will be deployed and distributed. Consider whether it will be included as part of an installation package, distributed separately, or available through Windows Update. Ensure that your deployment plan aligns with the driver signing and certification requirements.

    Architectural Design: Design the overall architecture of your driver solution. Consider modularization, separation of concerns

    I used AI provided by ChatGPT to formulate part of this response. I have verified that the information is accurate before sharing it with you.

    Hope this resolves your Query !!

    --If the reply is helpful, please Upvote and Accept it as an answer--

    1 person found this answer helpful.
    0 comments No comments

0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.