c00000fd
c00000fd

Reputation: 22289

IDebugSymbols3::GetSymbolTypeIdWide fails the first time with a debugger output message and then succeeds

I'm using IDebugSymbols3::GetSymbolTypeIdWide to retrieve symbol details from my WinDbg extension. The code goes as such:

    HRESULT get_symbol_info(const CComPtr<IDebugSymbols3>& pDebugSymbols)
    {
        ULONG64 uiMod;
        ULONG uiStructTypeID;
        HRESULT hr = pDebugSymbols->GetSymbolTypeIdWide(
            L"wdf01000!FxObject", 
            &uiStructTypeID, &uiMod);

        if(SUCCEEDED(hr))
        {
             //Proceed
        }

        return hr;
    }

For some reason when I just attach to a kernel target with WinDbg and run it, the call to GetSymbolTypeIdWide prints the following to the command window in WinDbg:

*************************************************************************
***                                                                   ***
***                                                                   ***
***    Either you specified an unqualified symbol, or your debugger   ***
***    doesn't have full symbol information.  Unqualified symbol      ***
***    resolution is turned off by default. Please either specify a   ***
***    fully qualified symbol module!symbolname, or enable resolution ***
***    of unqualified symbols by typing ".symopt- 100". Note that     ***
***    enabling unqualified symbol resolution with network symbol     ***
***    server shares in the symbol path may cause the debugger to     ***
***    appear to hang for long periods of time when an incorrect      ***
***    symbol name is typed or the network symbol server is down.     ***
***                                                                   ***
***    For some commands to work properly, your symbol path           ***
***    must point to .pdb files that have full type information.      ***
***                                                                   ***
***    Certain .pdb files (such as the public OS symbols) do not      ***
***    contain the required information.  Contact the group that      ***
***    provided you with these symbols if you need this command to    ***
***    work.                                                          ***
***                                                                   ***
***    Type referenced: wdf01000!FxObject                             ***
***                                                                   ***
*************************************************************************

and GetSymbolTypeIdWide fails with the error code E_FAIL.

Then if I re-run the same code, it succeeds without any messages to the command window.

Two questions:

  1. How do I stop it from outputting anything into the command window?

  2. What am I doing wrong that it fails on the first run and succeeds on the following runs?

Upvotes: 0

Views: 41

Answers (0)

Related Questions