문제

Possible Duplicate:
Why two functions print the same address?

I am working with PDB symbol files for an application which processes them (via the DbgHelp API). I have come across a strange issue where a PDB file will contain multiple different public symbol entries for the same address!

For example, using the latest Microsoft PDB file for kernel32.dll (wow64) on Windows 7 (x64), we can dump the following information and see 31 different entries for the same address 0x10b1a6e:

C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86>dbh.exe c:\symbols\wkernel32.pdb\D08F1E131D1F4D97B4AB2F64E00CFC8B2\wkernel32.pdb m 10b1a6e

 index            address     name
    7a            10b1a6e :   MFInitAttributesFromBlob
   179            10b1a6e :   MFCreateSourceReaderFromURL
   2fc            10b1a6e :   MFCreateASFMediaSinkActivate
   5b6            10b1a6e :   MFCreateWMVEncoderActivate
   61d            10b1a6e :   MFAddPeriodicCallback
   64c            10b1a6e :   MFPutWorkItem
   825            10b1a6e :   MFCreateAlignedMemoryBuffer
   c12            10b1a6e :   MFGetAttributesAsBlob
   d26            10b1a6e :   MFCreateMFVideoFormatFromMFMediaType
   f1a            10b1a6e :   MFFrameRateToAverageTimePerFrame
  1129            10b1a6e :   MFCreateProxyLocator
  1277            10b1a6e :   MFSerializeAttributesToStream
  12b3            10b1a6e :   MFEnumDeviceSources
  146d            10b1a6e :   MFCreateWMAEncoderActivate
  164c            10b1a6e :   MFBeginUnregisterWorkQueueWithMMCSS
  1bfc            10b1a6e :   MFCreateSourceReaderFromMediaSource
  1d25            10b1a6e :   MFInitMediaTypeFromWaveFormatEx
  1d72            10b1a6e :   MFGetStrideForBitmapInfoHeader
  1efb            10b1a6e :   CopyPropertyStore
  1f8d            10b1a6e :   MFDeserializePresentationDescriptor
  1fb5            10b1a6e :   MFCreateSampleGrabberSinkActivate
  1fe4            10b1a6e :   MFCreateASFStreamingMediaSinkActivate
  23a3            10b1a6e :   MFDeserializeAttributesFromStream
  24c0            10b1a6e :   MFConvertFromFP16Array
  26f7            10b1a6e :   MFSerializePresentationDescriptor
  2877            10b1a6e :   MFCreatePresentationDescriptor
  2ab7            10b1a6e :   MFCreateSourceReaderFromByteStream
  2b4a            10b1a6e :   MFGetWorkQueueMMCSSClass
  2e08            10b1a6e :   MFInitMediaTypeFromMFVideoFormat
  2ef0            10b1a6e :   MFCreateSinkWriterFromMediaSink
  2eff            10b1a6e :   MFConvertToFP16Array

The above example is one of many addresses containing duplicates. Normally there is one symbol entry at any address. It simply doesn't make sense to have multiple symbol entries for the same address AFAIK!!

Can anybody enlighten me as to:

  • Why this is happening?

  • Can these duplicate entries be resolved into there unique location?

Thanks.

도움이 되었습니까?

해결책

There are multiple symbols for the same address because all the functions are the same. In your case, they are all functions that go

HRESULT MFBlahBlahBlah(...)
{
    return E_NOTIMPL;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top