How to implement virtual display adapter?

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.

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: http:> showlists.cfm?list=ntdev>
>
> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
> software drivers!
> Details at http:
>
> To unsubscribe, visit the List Server section of OSR Online at <
> http://www.osronline.com/page.cfm?name=ListServer&gt;
></http:></http:>

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 ?

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: http:> showlists.cfm?list=ntdev>
>
> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
> software drivers!
> Details at http:
>
> To unsubscribe, visit the List Server section of OSR Online at <
> http://www.osronline.com/page.cfm?name=ListServer&gt;
></http:></http:>

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: http:

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

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

— 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</http:></http:></http:>

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: http:>> lists.cfm?list=ntdev>
>>
>> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
>> software drivers!
>> Details at http:
>>
>> To unsubscribe, visit the List Server section of OSR Online at <
>> http://www.osronline.com/page.cfm?name=ListServer&gt;
>>
>
> — 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: http:> showlists.cfm?list=ntdev>
>
> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
> software drivers!
> Details at http:
>
> To unsubscribe, visit the List Server section of OSR Online at <
> http://www.osronline.com/page.cfm?name=ListServer&gt;
></http:></http:></http:></http:>

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: http:
>>>
>>> MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers!
>>> Details at http:
>>>
>>> To unsubscribe, visit the List Server section of OSR Online at http:
>>
>> — 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: http:
>>
>> MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers!
>> Details at http:
>>
>> To unsubscribe, visit the List Server section of OSR Online at http:
>
> — 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</http:></http:></http:></http:></http:></http:>

Try Indirect Display Driver
https:

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: http:>>> lists.cfm?list=ntdev>
>>>
>>> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
>>> software drivers!
>>> Details at http:
>>>
>>> To unsubscribe, visit the List Server section of OSR Online at <
>>> http://www.osronline.com/page.cfm?name=ListServer&gt;
>>>
>>
>> — 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: http:>> lists.cfm?list=ntdev>
>>
>> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
>> software drivers!
>> Details at http:
>>
>> To unsubscribe, visit the List Server section of OSR Online at <
>> http://www.osronline.com/page.cfm?name=ListServer&gt;
>>
>
> — 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: http:> showlists.cfm?list=ntdev>
>
> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
> software drivers!
> Details at http:
>
> To unsubscribe, visit the List Server section of OSR Online at <
> http://www.osronline.com/page.cfm?name=ListServer&gt;
></http:></http:></http:></http:></http:></http:></https:>

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: http:

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

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

— 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: http:

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

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

— 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: http:

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

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

— 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</http:></http:></http:></http:></http:></http:></http:></http:></http:>