On Wed, 9 Sep 2020 11:53:53 -0700, Narcisa Ana Maria Vasile wrote:
> On Mon, Aug 24, 2020 at 11:53:44PM +0300, Dmitry Kozlyuk wrote:
> > On Thu, 20 Aug 2020 15:23:55 -0700, Narcisa Ana Maria Vasile wrote:  
[snip]
> > > +ClassName = "Windows UIO"
> > > +DiskName = "DPDK netUIO Installation Disk"
> > > +netuio.DeviceDesc = "netuio Device"
> > > +netuio.SVCDESC = "netuio Service"
> > > +
> > > +    // Build symbolic link name as <netuio_symbolic_link>_BDF  
> > > (bus/device/func)
> > > +    CHAR  symbolic_link[64] = { 0 };
> > > +    sprintf_s(symbolic_link, sizeof(symbolic_link), "%s_%04d%02d%02d",
> > > +                            NETUIO_DEVICE_SYMBOLIC_LINK_ANSI, 
> > > netuio_contextdata->addr.bus_num,
> > > +                            netuio_contextdata->addr.dev_num, 
> > > netuio_contextdata->addr.func_num);
> > > +
> > > +    ANSI_STRING ansi_symbolic_link;
> > > +    RtlInitAnsiString(&ansi_symbolic_link, symbolic_link);
> > > +
> > > +    status = RtlAnsiStringToUnicodeString(&netuio_symbolic_link, 
> > > &ansi_symbolic_link, TRUE);
> > > +    if (!NT_SUCCESS(status))
> > > +        return status;  
> > 
> > Why not use Unicode directly?
> >   
> It looks like either way, a cast will be needed (for example, if I use wchar 
> for symbolic_link and then
> RtlInitUnicodeString()). I've left it as is, but let me know if there's an 
> elegant solution that I didn't see.

It's not that important, really, you can leave the code as-is. FWIW, I meant
something like this:

DECLARE_UNICODE_STRING_SIZE(symbolic_link_name, NETUIO_MAX_SYMLINK_LEN);
RtlUnicodeStringPrintf(
    symbolic_link_name,
    NETUIO_DEVICE_SYMBOLIC_LINK_UNICODE,
    ...);

https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/ntstrsafe/nf-ntstrsafe-rtlunicodestringprintf
 

Reply via email to