Not to say about namespace issues with named events, if they are used.
Not only this namespace can be different in an RDP session, but also some Windows components like Telnet server can possibly play dirty games there (at least Telnet server is known to change the way Win32 is initialized for a new process, thus causing the glorious bug of 0xc0000142 error in setupapi.dev.log due to SetupAPI’s DrvInst.exe worker failing to initialize).
Not to say the potential for the subtle races is much higher.
Not to say that the proper implementation of such a thing, including event object lifetime issues etc, will be more complex coding-wise.
Surely it can be debugged, implemented and tested, but it is just more complex, especially taken into account the KMDF queues for inverted call IOCTLs.
Most of this kind of stuff both in Windows and in Linux use inverted calls (see “tun” and “tap” adapters in the latter).
The exceptions are rare, like the Vista+ sound stack (WaveRT IIRC), but this stuff is probably there for DRM only, to complicate writing of a kmode filter driver which will be able to intercept the cleartext DRMed context. And, with sound stack, the memory is only mapped to a trusted MS-provided server process.
Also there is RDMA/WinSock Direct style things, but their main purpose seems to be: to leverage the HW flow control/stream implementation in things like Converged Ethernet. These things make TCP redundant, and allow to receive (TCP only allows to send, and only with SO_SNDBUF set to zero) data directly to the app’s buffers.
–
Maxim S. Shatskih
Microsoft MVP on File System And Storage
xxxxx@storagecraft.com
http://www.storagecraft.com
“Peter Wieland” wrote in message news:xxxxx@ntdev…
“not to mention that they make me nervous.”
Unlike having a shared memory section between high-trust and low-trust code?
-p
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Jamey Kirby
Sent: Wednesday, January 14, 2015 1:49 PM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] User kernel communication via existing kernel objects
I just finished a driver where I share events and a section object between user-mode and kernel-mode. It works great. Performance is high. IOCTLs are OK for simple things, but reverse-callbacks are a pain in the arse; not to mention that they make me nervous.
On Wed, Jan 14, 2015 at 3:07 PM, Doğan Kurt wrote:
Hello everyone,
I like communicating via communication port in minifilter drivers. But i don’t want to register a minifilter driver to use this kind of communication every time.
Can i use existing kernel objects, like files, pipes, sockets to communicate with my driver. Which way would you choose if you had to create a generic protocol between kernel and user, without ioctls or irp major functions.
Please forgive my ignorance, if i asked something stupid :).
Thanks in advance.
— NTDEV is sponsored by OSR Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev OSR is HIRING!! See http://www.osr.com/careers For our schedule of WDF, WDM, debugging and other seminars visit: http://www.osr.com/seminars To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
–
Jamey Kirby
Disrupting the establishment since 1964
This is a personal email account and as such, emails are not subject to archiving. Nothing else really matters.
— NTDEV is sponsored by OSR Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev OSR is HIRING!! See http://www.osr.com/careers For our schedule of WDF, WDM, debugging and other seminars visit: http://www.osr.com/seminars To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer