I think the first time the OP entered the address is mistyped a lower-case “L” at the end of the number as a 1. This is born out by the fact that in the other two instances the last character is an ell. This is further evidenced by counting digits. Without the “L” you have 8, with it a very suspicious 9.
* Bob
? Bob Ammerman
? xxxxx@ramsystems.biz
716.864.8337
138 Liston St
Buffalo, NY 14223
www.ramsystems.biz
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-613136-
xxxxx@lists.osr.com] On Behalf Of Tim Roberts
Sent: Tuesday, July 26, 2016 5:58 PM
To: Windows System Software Devs Interest List
> Subject: Re: [ntdev] Develop a Virtual COM port driver for windows XP &
> above
>
> xxxxx@chetu.com wrote:
> >
> > I created a new USB UMDF V1 driver project & trying to write a simple USB
> driver that could write to my USB printer.
> >
> > In the new project I added code in CMyDevice::OnPrepareHardware
> function to create USB target device, then I retrieved the interface & End
> point information from my device & selected the appropriate End points &
> interface. I have added the CMyDevice::OnPrepareHardware function to QI
> so now it is getting invoked by the frame work.
> >
> > I also added the code for CMyIoQueue::Onwrite function & added it to the
> QueryInterface as well.
> >
> > When I install the USB driver I found that the CMyIoQueue::Onwrite()
> function gets invokes once I call writefile() function from my Win32
> application.
>
> That’s good. A lot of stuff has to be working to get that far.
>
>
> > While debugging the CMyDevice::OnPrepareHardware function I found out
> > that when I retrieve the address of the output Endpoints(pIUsbPipe)
> > through
> >
> > if (pIUsbPipe->IsOutEndPoint() && (UsbdPipeTypeBulk ==
> > pIUsbPipe->GetType())) {
> > m_pIUsbOutputPipe = pIUsbPipe; }
> >
> > I get a valid a 32 bit address but along with the address i get the
> > following statement “Information not available no symbols were loaded for
> WUDFX.dl”
> >
> > when I take pIUsbPipe in the watch window it lokes like this:
> > 0x009368b81> WUDFX.dl>.
> > but the code doesn’t break or throw any exception.
>
> This is a data structure on the heap. It’s probably trying to load symbols so it
> can show you the contents of IWDFUsbTargetPipe, but because that’s an
> interface, it doesn’t contain any data, so there’s nothing to look at anyway. It
> is unusual that it would be at an odd address, however. If you dump the
> memory at that address, does it look like a C++ interface? That is, a set of
> function pointers?
>
>
> > Then when I invoke the writefile() Win32 API from my application the
> > control comes to CMyIoQueue::Onwrite function then I step into it till
> > i reach the following code line
> >
> > pOutputPipe = m_Device->GetOutputPipe()
> >
> > when I step over this line & add pOutputPipe to watch window i get the
> following address against it
> > 0x009368b8l> > WUDFX.dl>
>
> Good that it is the same address, even if it is an odd number.
>
>
> > hr = pOutputPipe->FormatRequestForWrite(
> > pWdfRequest,
> > NULL, //pFile
> > pInputMemory,
> > NULL, //Memory offset
> > NULL //DeviceOffset
> > );
> >
> > I get the following exception
> >
> > pOutputPipe-> was nullptr
>
> Where do you see that exception? Are you seeing that in the watch
> window? If so, forget about it. Don’t ever trust the debugger, especially
> with local variables. Too much information is lost during compilation. If the
> driver did not crash at that point, then obviously the pointer was not null.
> You can try debugging the assembler, or printing stuff out to the debug log.
>
>
> > So question is in the previous line pOutputPipe was pointing to 0x009368b8l
> address then how can it be a nullptr.??
>
> Clearly it can’t, so it isn’t.
>
> –
> Tim Roberts, xxxxx@probo.com
> Providenza & Boekelheide, Inc.
>
>
> —
> NTDEV is sponsored by OSR
>
> Visit the list online at:
> http:
>
> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
> software drivers!
> Details at http:
>
> To unsubscribe, visit the List Server section of OSR Online at
> http:</http:></http:></http:>