Поделиться через


функция обратного вызова PIMAGEHLP_STATUS_ROUTINE (imagehlp.h)

Определяемая приложением функция обратного вызова, используемая с функцией BindImageEx . Подпрограмма состояния вызывается в процессе привязки образа.

Тип PIMAGEHLP_STATUS_ROUTINE определяет указатель на эту функцию обратного вызова. StatusRoutine — это заполнитель для имени функции, определяемой приложением.

Синтаксис

PIMAGEHLP_STATUS_ROUTINE PimagehlpStatusRoutine;

BOOL PimagehlpStatusRoutine(
  [in] IMAGEHLP_STATUS_REASON Reason,
  [in] PCSTR ImageName,
  [in] PCSTR DllName,
  [in] ULONG_PTR Va,
  [in] ULONG_PTR Parameter
)
{...}

Параметры

[in] Reason

Текущее состояние операции привязки. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
BindOutOfMemory
0
Недостаточно памяти. Значение параметра — это количество байтов в попытке выделения.
BindRvaToVaFailed
1
Относительный виртуальный адрес недействителен для образа. Значение параметра не используется.
BindNoRoomInImage
2
На изображении нет места для таблицы импорта нового формата. Значение параметра не используется.
BindImportModuleFailed
3
Сбой импорта модуля. Значение параметра не используется.
BindImportProcedureFailed
4
Сбой импорта процедуры. Значение параметра — это имя функции.
BindImportModule
5
Импорт модуля начинается. Значение параметра не используется.
BindImportProcedure
6
Импорт процедуры начинается. Значение параметра — это имя функции.
BindForwarder
7
Значение параметра — это имя переадресуемой функции.
BindForwarderNOT
8
Значение параметра — это имя функции, не пересылаемой.
BindImageModified
9
Изображение изменено. Значение параметра не используется.
BindExpandFileHeaders
10
Развернутые заголовки файлов. Значение параметра — это количество байтов.
BindImageComplete
11
Привязка завершена. Дополнительные сведения о значении параметра см. в следующем разделе Примечания.
BindMismatchedSymbols
12
Контрольная сумма не совпадает. Значение параметра — это имя файла символов.
BindSymbolsNotUpdated
13
Файл символов не был обновлен. Значение параметра — это имя файла символов, который не обновлен.

[in] ImageName

Имя привязаемого файла. Это может быть имя файла, частичный путь или полный путь.

[in] DllName

Имя библиотеки DLL.

[in] Va

Вычисленный виртуальный адрес.

[in] Parameter

Любые дополнительные сведения о состоянии. Это значение зависит от значения параметра Reason . Дополнительные сведения см. в фрагменте кода в следующем разделе Примечания.

Возвращаемое значение

Если функция выполнена успешно, возвращается значение TRUE.

Если функция завершается сбоем, возвращается значение FALSE. Чтобы получить расширенные сведения об ошибке, вызовите Метод GetLastError.

Комментарии

Все функции ImageHlp, такие как эта, являются однопоточными. Таким образом, вызовы из нескольких потоков к этой функции, скорее всего, приведут к непредвиденному поведению или повреждению памяти. Чтобы избежать этого, необходимо синхронизировать все параллельные вызовы из нескольких потоков в эту функцию.

В следующем фрагменте кода описывается, как использовать значение Va в состоянии BindImageComplete.

case BindImageComplete:
    if (fVerbose) {
        fprintf(stderr, "BIND: Details of binding %s\n", ImageName );
        NewImports = (PIMAGE_BOUND_IMPORT_DESCRIPTOR)Va;
        NewImport = NewImports;
        while (NewImport->OffsetModuleName) {
            fprintf( stderr, "    Import from %s [%x]",
                     (LPSTR)NewImports + NewImport->OffsetModuleName,
                     NewImport->TimeDateStamp
                   );
            if (NewImport->NumberOfModuleForwarderRefs != 0) {
                fprintf( stderr, " with %u forwarders", NewImport-> 
                         NumberOfModuleForwarderRefs );
            }
            fprintf( stderr, "\n" );
            NewForwarder = (PIMAGE_BOUND_FORWARDER_REF)(NewImport+1);
            for (i=0; i<NewImport->NumberOfModuleForwarderRefs; i++) 
            {
                fprintf( stderr, "        Forward to %s [%x]\n",
                   (LPSTR)NewImports + NewForwarder->OffsetModuleName,
                   NewForwarder->TimeDateStamp);
                NewForwarder += 1;
            }
            NewImport = (PIMAGE_BOUND_IMPORT_DESCRIPTOR)NewForwarder;
        }
    }
    break;

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header imagehlp.h

См. также раздел

BindImageEx

Функции ImageHlp