Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results

Before Posting...
Please check out the Community Guidelines in the Announcements and Administration Category.

How to implement virtual display adapter?

OSR_Community_UserOSR_Community_User Member Posts: 110,218
WDDM is kernel-display only driver , but it just works for actual physics display adapter . so , I develop a virtual PCI bus driver , and it create a virtual display adapter.while I load KMDOD sample for the virtual display adapter , the device manager report code (31) .

My questions :
1. Virtual display adapter , a virtual hardware , can be achieved by this way (through virtual PCI bus)?
2. If it can be achieved by point 1, the PCI bus driver how to implement IRP_MN_QUERY_RESOURCE and IRP_MN_QUERY_RESOURCE_REQUIREDMENT ?


Please advise, thanks.

Comments

  • JiaBang_LinJiaBang_Lin Member - All Emails Posts: 29
    virtual PCI bus is pain in the ass. The system port driver (dxgkrnl.sys)
    checks the PCI device properties (such as interrupt line, PCI
    class/subclass code, memory bar,...etc) . It is very hard to cheat
    dxgkrnl.sys by emulating a PCI device.

    2017-11-29 9:18 GMT+08:00 xxxxx@cvte.com :

    > WDDM is kernel-display only driver , but it just works for actual physics
    > display adapter . so , I develop a virtual PCI bus driver , and it create a
    > virtual display adapter.while I load KMDOD sample for the virtual display
    > adapter , the device manager report code (31) .
    >
    > My questions :
    > 1. Virtual display adapter , a virtual hardware , can be achieved by this
    > way (through virtual PCI bus)?
    > 2. If it can be achieved by point 1, the PCI bus driver how to implement
    > IRP_MN_QUERY_RESOURCE and IRP_MN_QUERY_RESOURCE_REQUIREDMENT ?
    >
    >
    > Please advise, thanks.
    >
    > ---
    > NTDEV is sponsored by OSR
    >
    > Visit the list online at: showlists.cfm?list=ntdev>
    >
    > MONTHLY seminars on crash dump analysis, WDF, Windows internals and
    > software drivers!
    > Details at
    >
    > To unsubscribe, visit the List Server section of OSR Online at <
    > http://www.osronline.com/page.cfm?name=ListServer>;
    >
  • OSR_Community_UserOSR_Community_User Member Posts: 110,218
    thanks for your reply.

    1) I think whatever PCI device information (such device id , hwid , resource , resource requirement etc) the system query must through the virtual PCI bus , so in the virtual bus driver, I can emulating PCI device information for its request.
    Am I wrong ?

    2) Some software such "iDisplay" , it uses a iDisplayFilter.sys to filter all system device . In filtering the PCI root bus , the Filter driver create a virtual display adapter . My KMDOD sample can work with it .
    What do you think about this ?
  • JiaBang_LinJiaBang_Lin Member - All Emails Posts: 29
    See my comment below.

    2017-11-29 12:49 GMT+08:00 xxxxx@cvte.com :

    > thanks for your reply.
    >
    > 1) I think whatever PCI device information (such device id , hwid ,
    > resource , resource requirement etc) the system query must through the
    > virtual PCI bus , so in the virtual bus driver, I can emulating PCI device
    > information for its request.
    > Am I wrong ?
    >
    >
    How do you emulate a "interrupt" ? If you can emulate interrupt, then you
    can continue with this path.

    2) Some software such "iDisplay" , it uses a iDisplayFilter.sys to filter
    > all system device . In filtering the PCI root bus , the Filter driver
    > create a virtual display adapter . My KMDOD sample can work with it .
    > What do you think about this ?
    >
    > I have no idea about iDisplay. You have to try it on your own.


    > ---
    > NTDEV is sponsored by OSR
    >
    > Visit the list online at: showlists.cfm?list=ntdev>
    >
    > MONTHLY seminars on crash dump analysis, WDF, Windows internals and
    > software drivers!
    > Details at
    >
    > To unsubscribe, visit the List Server section of OSR Online at <
    > http://www.osronline.com/page.cfm?name=ListServer>;
    >
  • OSR_Community_UserOSR_Community_User Member Posts: 110,218
    Sorry, I am a beginnner . Can you tell me what is "Interrupt" ? thanks


    From: xxxxx@gmail.com
    Date: 2017-11-29 13:25
    To: Windows System Software Devs Interest List
    Subject: Re: [ntdev] How to implement virtual display adapter?
    See my comment below.

    2017-11-29 12:49 GMT+08:00 xxxxx@cvte.com :
    thanks for your reply.

    1) I think whatever PCI device information (such device id , hwid , resource , resource requirement etc) the system query must through the virtual PCI bus , so in the virtual bus driver, I can emulating PCI device information for its request.
    Am I wrong ?


    How do you emulate a "interrupt" ? If you can emulate interrupt, then you can continue with this path.

    2) Some software such "iDisplay" , it uses a iDisplayFilter.sys to filter all system device . In filtering the PCI root bus , the Filter driver create a virtual display adapter . My KMDOD sample can work with it .
    What do you think about this ?

    I have no idea about iDisplay. You have to try it on your own.

    ---
    NTDEV is sponsored by OSR

    Visit the list online at:

    MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers!
    Details at

    To unsubscribe, visit the List Server section of OSR Online at

    --- NTDEV is sponsored by OSR Visit the list online at: MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers! Details at To unsubscribe, visit the List Server section of OSR Online at
  • JiaBang_LinJiaBang_Lin Member - All Emails Posts: 29
    Interrupt is a mechansm for the hardware to notify driver that there are
    something in the device that requires the driver to service. A normal GPU
    typically fires interrupt for VSYNC/DMA completion/.... Dxgkrnl.sys would
    definitely check if the device has interrupt capability or not.

    2017-11-29 14:31 GMT+08:00 xxxxx@cvte.com :

    > Sorry, I am a beginnner . Can you tell me what is "Interrupt" ? thanks
    >
    >
    > *From:* xxxxx@gmail.com
    > *Date:* 2017-11-29 13:25
    > *To:* Windows System Software Devs Interest List
    > *Subject:* Re: [ntdev] How to implement virtual display adapter?
    > See my comment below.
    >
    > 2017-11-29 12:49 GMT+08:00 xxxxx@cvte.com :
    >
    >> thanks for your reply.
    >>
    >> 1) I think whatever PCI device information (such device id , hwid ,
    >> resource , resource requirement etc) the system query must through the
    >> virtual PCI bus , so in the virtual bus driver, I can emulating PCI device
    >> information for its request.
    >> Am I wrong ?
    >>
    >>
    > How do you emulate a "interrupt" ? If you can emulate interrupt, then you
    > can continue with this path.
    >
    > 2) Some software such "iDisplay" , it uses a iDisplayFilter.sys to filter
    >> all system device . In filtering the PCI root bus , the Filter driver
    >> create a virtual display adapter . My KMDOD sample can work with it .
    >> What do you think about this ?
    >>
    >> I have no idea about iDisplay. You have to try it on your own.
    >
    >
    >> ---
    >> NTDEV is sponsored by OSR
    >>
    >> Visit the list online at: > lists.cfm?list=ntdev>
    >>
    >> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
    >> software drivers!
    >> Details at
    >>
    >> To unsubscribe, visit the List Server section of OSR Online at <
    >> http://www.osronline.com/page.cfm?name=ListServer>;
    >>
    >
    > --- NTDEV is sponsored by OSR Visit the list online at: MONTHLY seminars
    > on crash dump analysis, WDF, Windows internals and software drivers!
    > Details at To unsubscribe, visit the List Server section of OSR Online at
    >
    >
    > ---
    > NTDEV is sponsored by OSR
    >
    > Visit the list online at: showlists.cfm?list=ntdev>
    >
    > MONTHLY seminars on crash dump analysis, WDF, Windows internals and
    > software drivers!
    > Details at
    >
    > To unsubscribe, visit the List Server section of OSR Online at <
    > http://www.osronline.com/page.cfm?name=ListServer>;
    >
  • OSR_Community_UserOSR_Community_User Member Posts: 110,218
    Thank you very mush.

    It seem to be so difficult to do this.
    Are there any other way to emulate virtual monitor?

    > ?? 2017??11??29?գ?14:38??xxxxx@gmail.com д????
    >
    > Interrupt is a mechansm for the hardware to notify driver that there are something in the device that requires the driver to service. A normal GPU typically fires interrupt for VSYNC/DMA completion/.... Dxgkrnl.sys would definitely check if the device has interrupt capability or not.
    >
    > 2017-11-29 14:31 GMT+08:00 xxxxx@cvte.com :
    >> Sorry, I am a beginnner . Can you tell me what is "Interrupt" ? thanks
    >>
    >>
    >> From: xxxxx@gmail.com
    >> Date: 2017-11-29 13:25
    >> To: Windows System Software Devs Interest List
    >> Subject: Re: [ntdev] How to implement virtual display adapter?
    >> See my comment below.
    >>
    >> 2017-11-29 12:49 GMT+08:00 xxxxx@cvte.com :
    >>> thanks for your reply.
    >>>
    >>> 1) I think whatever PCI device information (such device id , hwid , resource , resource requirement etc) the system query must through the virtual PCI bus , so in the virtual bus driver, I can emulating PCI device information for its request.
    >>> Am I wrong ?
    >>
    >> How do you emulate a "interrupt" ? If you can emulate interrupt, then you can continue with this path.
    >>
    >>> 2) Some software such "iDisplay" , it uses a iDisplayFilter.sys to filter all system device . In filtering the PCI root bus , the Filter driver create a virtual display adapter . My KMDOD sample can work with it .
    >>> What do you think about this ?
    >> I have no idea about iDisplay. You have to try it on your own.
    >>
    >>> ---
    >>> NTDEV is sponsored by OSR
    >>>
    >>> Visit the list online at:
    >>>
    >>> MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers!
    >>> Details at
    >>>
    >>> To unsubscribe, visit the List Server section of OSR Online at
    >>
    >> --- NTDEV is sponsored by OSR Visit the list online at: MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers! Details at To unsubscribe, visit the List Server section of OSR Online at
    >>
    >> ---
    >> NTDEV is sponsored by OSR
    >>
    >> Visit the list online at:
    >>
    >> MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers!
    >> Details at
    >>
    >> To unsubscribe, visit the List Server section of OSR Online at
    >
    > --- NTDEV is sponsored by OSR Visit the list online at: MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers! Details at To unsubscribe, visit the List Server section of OSR Online at
  • JiaBang_LinJiaBang_Lin Member - All Emails Posts: 29
    Try Indirect Display Driver


    2017-11-29 21:30 GMT+08:00 xxxxx@cvte.com :

    >
    > Thank you very mush.
    >
    > It seem to be so difficult to do this.
    > Are there any other way to emulate virtual monitor?
    >
    >
    > 在 2017年11月29日,14:38,xxxxx@gmail.com 写道:
    >
    > Interrupt is a mechansm for the hardware to notify driver that there are
    > something in the device that requires the driver to service. A normal GPU
    > typically fires interrupt for VSYNC/DMA completion/.... Dxgkrnl.sys would
    > definitely check if the device has interrupt capability or not.
    >
    > 2017-11-29 14:31 GMT+08:00 xxxxx@cvte.com :
    >
    >> Sorry, I am a beginnner . Can you tell me what is "Interrupt" ? thanks
    >>
    >>
    >> *From:* xxxxx@gmail.com
    >> *Date:* 2017-11-29 13:25
    >> *To:* Windows System Software Devs Interest List
    >> *Subject:* Re: [ntdev] How to implement virtual display adapter?
    >> See my comment below.
    >>
    >> 2017-11-29 12:49 GMT+08:00 xxxxx@cvte.com :
    >>
    >>> thanks for your reply.
    >>>
    >>> 1) I think whatever PCI device information (such device id , hwid ,
    >>> resource , resource requirement etc) the system query must through the
    >>> virtual PCI bus , so in the virtual bus driver, I can emulating PCI device
    >>> information for its request.
    >>> Am I wrong ?
    >>>
    >>>
    >> How do you emulate a "interrupt" ? If you can emulate interrupt, then you
    >> can continue with this path.
    >>
    >> 2) Some software such "iDisplay" , it uses a iDisplayFilter.sys to filter
    >>> all system device . In filtering the PCI root bus , the Filter driver
    >>> create a virtual display adapter . My KMDOD sample can work with it .
    >>> What do you think about this ?
    >>>
    >>> I have no idea about iDisplay. You have to try it on your own.
    >>
    >>
    >>> ---
    >>> NTDEV is sponsored by OSR
    >>>
    >>> Visit the list online at: >> lists.cfm?list=ntdev>
    >>>
    >>> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
    >>> software drivers!
    >>> Details at
    >>>
    >>> To unsubscribe, visit the List Server section of OSR Online at <
    >>> http://www.osronline.com/page.cfm?name=ListServer>;
    >>>
    >>
    >> --- NTDEV is sponsored by OSR Visit the list online at: MONTHLY seminars
    >> on crash dump analysis, WDF, Windows internals and software drivers!
    >> Details at To unsubscribe, visit the List Server section of OSR Online
    >> at
    >>
    >>
    >> ---
    >> NTDEV is sponsored by OSR
    >>
    >> Visit the list online at: > lists.cfm?list=ntdev>
    >>
    >> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
    >> software drivers!
    >> Details at
    >>
    >> To unsubscribe, visit the List Server section of OSR Online at <
    >> http://www.osronline.com/page.cfm?name=ListServer>;
    >>
    >
    > --- NTDEV is sponsored by OSR Visit the list online at: MONTHLY seminars
    > on crash dump analysis, WDF, Windows internals and software drivers!
    > Details at To unsubscribe, visit the List Server section of OSR Online at
    >
    >
    > ---
    > NTDEV is sponsored by OSR
    >
    > Visit the list online at: showlists.cfm?list=ntdev>
    >
    > MONTHLY seminars on crash dump analysis, WDF, Windows internals and
    > software drivers!
    > Details at
    >
    > To unsubscribe, visit the List Server section of OSR Online at <
    > http://www.osronline.com/page.cfm?name=ListServer>;
    >
  • OSR_Community_UserOSR_Community_User Member Posts: 110,218
    Eh..
    Indirect Display Driver is only support Windows 10 1607 or later .
    Anyway , this is another way to implement virtual monitor.

    Hey , I found your "virtual-display" project in Github which can be used in Win10 correctly .
    It is amazing . There is such a way to achieve virtual monitor .


    From: xxxxx@gmail.com
    Date: 2017-11-30 10:24
    To: Windows System Software Devs Interest List
    Subject: Re: [ntdev] How to implement virtual display adapter?
    Try Indirect Display Driver

    2017-11-29 21:30 GMT+08:00 xxxxx@cvte.com :

    Thank you very mush.

    It seem to be so difficult to do this.
    Are there any other way to emulate virtual monitor?


    在 2017年11月29日,14:38,xxxxx@gmail.com 写道:

    Interrupt is a mechansm for the hardware to notify driver that there are something in the device that requires the driver to service. A normal GPU typically fires interrupt for VSYNC/DMA completion/.... Dxgkrnl.sys would definitely check if the device has interrupt capability or not.

    2017-11-29 14:31 GMT+08:00 xxxxx@cvte.com :
    Sorry, I am a beginnner . Can you tell me what is "Interrupt" ? thanks


    From: xxxxx@gmail.com
    Date: 2017-11-29 13:25
    To: Windows System Software Devs Interest List
    Subject: Re: [ntdev] How to implement virtual display adapter?
    See my comment below.

    2017-11-29 12:49 GMT+08:00 xxxxx@cvte.com :
    thanks for your reply.

    1) I think whatever PCI device information (such device id , hwid , resource , resource requirement etc) the system query must through the virtual PCI bus , so in the virtual bus driver, I can emulating PCI device information for its request.
    Am I wrong ?


    How do you emulate a "interrupt" ? If you can emulate interrupt, then you can continue with this path.

    2) Some software such "iDisplay" , it uses a iDisplayFilter.sys to filter all system device . In filtering the PCI root bus , the Filter driver create a virtual display adapter . My KMDOD sample can work with it .
    What do you think about this ?

    I have no idea about iDisplay. You have to try it on your own.

    ---
    NTDEV is sponsored by OSR

    Visit the list online at:

    MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers!
    Details at

    To unsubscribe, visit the List Server section of OSR Online at

    --- NTDEV is sponsored by OSR Visit the list online at: MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers! Details at To unsubscribe, visit the List Server section of OSR Online at

    ---
    NTDEV is sponsored by OSR

    Visit the list online at:

    MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers!
    Details at

    To unsubscribe, visit the List Server section of OSR Online at

    --- NTDEV is sponsored by OSR Visit the list online at: MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers! Details at To unsubscribe, visit the List Server section of OSR Online at

    ---
    NTDEV is sponsored by OSR

    Visit the list online at:

    MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers!
    Details at

    To unsubscribe, visit the List Server section of OSR Online at

    --- NTDEV is sponsored by OSR Visit the list online at: MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers! Details at To unsubscribe, visit the List Server section of OSR Online at
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!