75 if ( FALSE == libFile.
IsValid() ) {
83 PSTR pArchiveStartString = (PSTR)libFile.
GetBase();
85 if ( 0 != strncmp( pArchiveStartString, IMAGE_ARCHIVE_START, IMAGE_ARCHIVE_START_SIZE ) ) {
92 PIMAGE_ARCHIVE_MEMBER_HEADER pMbrHdr;
93 pMbrHdr =
MakePtr( PIMAGE_ARCHIVE_MEMBER_HEADER, pArchiveStartString, IMAGE_ARCHIVE_START_SIZE );
96 PDWORD pcbSymbols = (PDWORD)( pMbrHdr + 1 );
104 PDWORD pMemberOffsets = pcbSymbols + 1;
108 PSTR pszSymbolName =
MakePtr( PSTR, pMemberOffsets, 4 * cSymbols );
113 for (
unsigned i = 0; i < cSymbols; i++ ) {
124 string symbol( pszSymbolName );
131 pszSymbolName += strlen( pszSymbolName ) + 1;
153 if ( symbolName.compare( 0, 2,
"__" ) == 0 )
return FALSE;
154 if ( symbolName.compare( 0, 3,
"??_" ) == 0 && symbolName[3] !=
'0' )
156 if ( symbolName[0] ==
'_' ) {
157 symbolName.erase( 0, 1 );
160 if ( symbolName.find(
"detail@boost" ) != string::npos )
return FALSE;
161 if ( symbolName.find(
"details@boost" ) != string::npos )
return FALSE;
187 m_hFile = INVALID_HANDLE_VALUE;
194 CreateFile( pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE)0 );
196 if (
m_hFile == INVALID_HANDLE_VALUE ) {
206 m_hFile = INVALID_HANDLE_VALUE;
216 m_hFile = INVALID_HANDLE_VALUE;