DeviceName in IoCreateDevice

Hi All,

I’ve encountered a very rare situation when sr.sys
(Windows System Recovery Driver) crashed my machine
due to an unsupported request sent to my Storage
device.
Anyway, after very deep digging in my code, I found
out that the only thing that solved it, was sending to
IoCreateDevice a NULL terminated Unicode String (As
documented in DDK)
I have two questions:

  1. Does anyone know about other disposing that this
    issue might cause?
  2. I had a look at the samples in the DDK and everyone
    is using RtlInitUnicodeString function when formatting
    the Device Name, which means that it is not a NULL
    terminated Unicode String

I’ll be happy to know what is the correct way to work
with and why the Device Name should be
NULL-Terminatead according to the DDK

Thanks in advance

Alon


Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com

RtlInitUnicodeString is only used with NULL terminated strings. I’m going
to let you do the tiny bit of work to find the unambiguous documentation
that describes exactly that.

Why the IoCreateDevice() call is dependent on a UNICODE_STRING that is NULL
terminated is another discussion, one that I’m not going to add much value
to, but one that I want to watch.

My only contribution would be to ask, “What’s the point of a UNICODE_STRING
if it has to be NULL terminated, also?”

Phil

Philip D. Barila
Seagate Technology LLC
(720) 684-1842

xxxxx@lists.osr.com wrote on 09/13/2005 09:44:08 AM:

Hi All,

I’ve encountered a very rare situation when sr.sys
(Windows System Recovery Driver) crashed my machine
due to an unsupported request sent to my Storage
device.
Anyway, after very deep digging in my code, I found
out that the only thing that solved it, was sending to
IoCreateDevice a NULL terminated Unicode String (As
documented in DDK)
I have two questions:

  1. Does anyone know about other disposing that this
    issue might cause?
  2. I had a look at the samples in the DDK and everyone
    is using RtlInitUnicodeString function when formatting
    the Device Name, which means that it is not a NULL
    terminated Unicode String

I’ll be happy to know what is the correct way to work
with and why the Device Name should be
NULL-Terminatead according to the DDK

Thanks in advance

Alon