User kernel communication via existing kernel objects

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.

I would ask why not use IOCTLs?

-p

From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Dogan Kurt
Sent: Wednesday, January 14, 2015 12:07 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] User kernel communication via existing kernel objects

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

Why would choose not to use IOCTL’s or IRP_MJ_XXX functions? What do you
think files, pipes or sockets are going to use? A well designed IOCTL
interface can easily perform over a million requests a second if there is
not a lot of information being transferred per request.

Don Burn
Windows Driver Consulting
Website: http://www.windrvr.com

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Dogan Kurt
Sent: Wednesday, January 14, 2015 3:07 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] User kernel communication via existing kernel objects

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

Thanks, obviously this is the path i should follow.

User process can call the kernel any time it wants. How kernel calls back
the user process? (With mini filters, FltSendMessage does the job). Once i
took the following steps.

  • Create a named event
  • User calls kernel and waits on the event
  • Kernel does the job, and sets the event
  • User wait ends, then user calls kernel again to get the result

Of course i had to use some globals, and it was a terrible way to get the
job done.

On Wed, Jan 14, 2015 at 10:13 PM, Don Burn wrote:

> Why would choose not to use IOCTL’s or IRP_MJ_XXX functions? What do you
> think files, pipes or sockets are going to use? A well designed IOCTL
> interface can easily perform over a million requests a second if there is
> not a lot of information being transferred per request.
>
>
> Don Burn
> Windows Driver Consulting
> Website: http://www.windrvr.com
>
>
>
>
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf Of Dogan Kurt
> Sent: Wednesday, January 14, 2015 3:07 PM
> To: Windows System Software Devs Interest List
> Subject: [ntdev] User kernel communication via existing kernel objects
>
> 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
>
>
> —
> 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
>

>would you choose if you had to create a generic protocol between kernel and user, without ioctls

IOCTLs are the simplest way.


Maxim S. Shatskih
Microsoft MVP on File System And Storage
xxxxx@storagecraft.com
http://www.storagecraft.com

>User process can call the kernel any time it wants. How kernel calls back the user process?

By filling and completing the pending IOCTL IRP.

  • Create a named event
  • User calls kernel and waits on the event

This is much more complex, if you want to do this really properly without races.


Maxim S. Shatskih
Microsoft MVP on File System And Storage
xxxxx@storagecraft.com
http://www.storagecraft.com

The client sends a read to the driver. The driver holds off completing the read IRP until it has something to send up to the app. When the app is done doing that thing it can reply with a result, and then send a new read.

-p

From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Dogan Kurt
Sent: Wednesday, January 14, 2015 12:54 PM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] User kernel communication via existing kernel objects

Thanks, obviously this is the path i should follow.

User process can call the kernel any time it wants. How kernel calls back the user process? (With mini filters, FltSendMessage does the job). Once i took the following steps.

  • Create a named event
  • User calls kernel and waits on the event
  • Kernel does the job, and sets the event
  • User wait ends, then user calls kernel again to get the result

Of course i had to use some globals, and it was a terrible way to get the job done.

On Wed, Jan 14, 2015 at 10:13 PM, Don Burn > wrote:
Why would choose not to use IOCTL’s or IRP_MJ_XXX functions? What do you
think files, pipes or sockets are going to use? A well designed IOCTL
interface can easily perform over a million requests a second if there is
not a lot of information being transferred per request.

Don Burn
Windows Driver Consulting
Website: http://www.windrvr.com

-----Original Message-----
From: xxxxx@lists.osr.commailto:xxxxx
[mailto:xxxxx@lists.osr.commailto:xxxxx] On Behalf Of Dogan Kurt
Sent: Wednesday, January 14, 2015 3:07 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] User kernel communication via existing kernel objects
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


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

— 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</mailto:xxxxx></mailto:xxxxx>

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.

“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

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

Using named events between KM and UM is a little more complex. It is easier
to use unnamed events and pass the handles down to the driver via IOCTL.
This resolves any issues with named events.

As for RDP: See GLOBAL??, Global, and Local if using named events is
required.

On Thu, Jan 15, 2015 at 7:38 AM, Maxim S. Shatskih
wrote:

> 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
>
>
> —
> 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.

So, you create a system thread that runs in the context of the process that it’s waiting on? And it gets signaled when that process, the one that it’s a part of, is exiting? That works? I’m not sure I understand.

Because… the teardown has to be done in the context of the process.

The other *really* big problem with the shared memory model is that it requires a metric SHIT ton of WDM. And most people, myself emphatically included, want to avoid WDM as much as possible.

Peter
OSR
@OSRDrivers

Precisely. The last time we did this, not only did we have to write a DLL to handle the overlapped I/O, we had to write the client an example program that CALLED the DLL.

Peter
OSR
@OSRDrivers

>No, the driver has a watchdog thread. The thread calls KeWaitForSingleObject() on the EPROCESS of the app.

I hope you at least remember to take a reference to EPROCESS.

No, I create a thread in the system process.

No, the tear-down does not have to be done in the context of the user-mode
process.

I am not clear on what you mean by a “SHIT ton of WDM”

On Fri, Jan 16, 2015 at 5:27 PM, wrote:

>


>
> So, you create a system thread that runs in the context of the process
> that it’s waiting on? And it gets signaled when that process, the one that
> it’s a part of, is exiting? That works? I’m not sure I understand.
>
> Because… the teardown has to be done in the context of the process.
>
> The other really big problem with the shared memory model is that it
> requires a metric SHIT ton of WDM. And most people, myself emphatically
> included, want to avoid WDM as much as possible.
>
> Peter
> OSR
> @OSRDrivers
>
>
>
> —
> 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.

I do reference EPROCESS while initializing, but dereference when setup is
complete; otherwise, the reference will not go to zero and the event will
not be signaled on termination.

On Fri, Jan 16, 2015 at 7:45 PM, wrote:

> >No, the driver has a watchdog thread. The thread calls
> KeWaitForSingleObject() on the EPROCESS of the app.
>
> I hope you at least remember to take a reference to EPROCESS.
>
> —
> 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.

>I do reference EPROCESS while initializing, but dereference when setup is
complete; otherwise, the reference will not go to zero and the event will
not be signaled on termination.

Sorry, man, but you have no friggin clue. People like you make me afraid to buy hardware with OEM drivers.

You may be right. I can only relate my experience. My drivers are used in
visualization environments, not real hardware.

On Sat, Jan 17, 2015 at 9:58 AM, wrote:

> >I do reference EPROCESS while initializing, but dereference when setup is
> complete; otherwise, the reference will not go to zero and the event will
> not be signaled on termination.
>
> Sorry, man, but you have no friggin clue. People like you make me afraid
> to buy hardware with OEM drivers.
>
> —
> 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.

Really? Hmmm… I clearly don’t understand your model then. Because you HAVE to call MmUnmapLockedPages in the context of the process into which you mapped the memory.

That was a METRIC shit time of WDM by the way :wink:

Best practice is to avoid WDM where possible in preference for WDF. I’m not aware of any way to create a section and map it into and unmap it out of the user-mode part of a process without using a lot of WDM function calls. While I’m perfectly comfortable using WDM, I *really* don’t write driver code for myself, I write it for whoever the poor bastard is who has to maintain it after I’ve written it.

Peter
OSR
@OSRDrivers

* virtualization - dang auto-correct.

On Sat, Jan 17, 2015 at 10:59 AM, Jamey Kirby wrote:

> You may be right. I can only relate my experience. My drivers are used in
> visualization environments, not real hardware.
>
> On Sat, Jan 17, 2015 at 9:58 AM, wrote:
>
>> >I do reference EPROCESS while initializing, but dereference when setup is
>> complete; otherwise, the reference will not go to zero and the event will
>> not be signaled on termination.
>>
>> Sorry, man, but you have no friggin clue. People like you make me afraid
>> to buy hardware with OEM drivers.
>>
>> —
>> 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.

>


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.