Re: Remote Display Driver's VideoPortInitialize() returns STATUS_UNSUCCESSFUL (0xC0000001)

On 31/10/17 10:31 PM, Nathan Kidd wrote:

So despite looking like miniport drivers, the fact that they don’t call
VideoPortInitialize() means they’re not standard video miniport drivers.

Does anybody have suggestions on how to find out what variation of video
driver the Remote Desktop Services Protocol Provider really wants?

GetInputHandles[1] says it wants straight-up I8042prt and Mouclass
drivers, but GetVideoHandle[2] is quite a bit more vague, “Obtains the
handle of the video device for the protocol.”

Many-months-later update for posterity:

Yes, you have to write all these drivers. You do need a Remote Display
Driver, with undocumented MP and DD elements. MP is mostly bare. DD can
start from old mirror sample.

The best advice for someone going down this path is “don’t”. The
second-best advice is to fully trace the RDP RDSPP implementation, video
driver IOCTLs (MP) and driver escapes (DD), figure out the registry keys
to enable full RDS event tracing, and finally become very, very
comfortable stepping through kernel assembly (start with
win32k!RemoteConnect).

Source: Scars and bruises

-Nathan