It sounds to me like the string in memory is Unicode, i.e. has 16 bit
chars, and you are dereferencing it as a null-terminated string of
standard C++ (i.e. 8 bit) chars. Try treating it as an array of wide
characters instead.
-Ted
mayuravb wrote:[color=blue]
> Hi Thompson,
>
> I am facing the exact same problem.
> I am developing the GUI in C# and have a c++ .NET DLL.
> I'm am also getting pdbcd->dbcc_name as only one character "\".
> I would like to know if you have the solution to this?
> I would appreciate the help.
>
> Thanks
> -M
>
>
> Joe Thompson wrote:[color=green]
>> *Hi,
>>
>> I am using VS.net 2003 to write a managed C++ windows application.
>> My main form traps the WM_DEVICECHANGE message and calls a method in
>> my own
>> unmanaged class passing the wParam and lParam.
>> In the method, I cast the lParam to a PDEV_BROADCAST_DEVICEINTERFACE
>> like:
>>
>> pdbcd = (PDEV_BROADCAST_DEVICEINTERFACE) lParam;
>>
>> The problem I'm having is that the pdbcd->dbcc_name is only one
>> character "\".
>> If I look at it in memory, I can see what it should be
>> ("\\?\USB#Vid_0
>> etc...") but it is twice as long and every other character is a 0
>> (("\.\.?.\.U.S.B.#.V.i.d._.0. etc...")).
>>
>> I've tried the different Language option settings but they all seem
>> to work
>> the same. I guess I can live with it as long as I can get the
>> correct value
>> in after the cast.
>>
>> Any ideas what I may be doing wrong or ways to fix it?
>>
>> Thanks,
>> Joe *[/color]
>
>
>
> --
> mayuravb
> ------------------------------------------------------------------------
> Posted via
http://www.codecomments.com
> ------------------------------------------------------------------------
>[/color]