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


CommentMarkAtProfile

Обновлен: Ноябрь 2007

Метод CommentMarkAtProfile вставляет значение отметки времени, числовую метку и строку комментария в VSP-файл. Значение отметки времени можно использовать для синхронизации внешних событий. Чтобы вставить метку и комментарий, необходимо включить профилирование для потока, содержащего функцию CommentMarkAtProfile.

PROFILE_COMMAND_STATUS PROFILERAPI CommentMarkAtProfileA(
                                                                      __int64 dnTimestamp,
                                                                      long lMarker,
                                                                      LPCTSTR szComment);

Параметры

dnTimestamp

64-разрядное целое число, представляющее значение отметки времени.

lMarker

Числовая метка для вставки. Метка должна быть больше или равна нулю (0).

szComment

Указатель на вставляемую текстовую строку. Длина строки не должна превышать 256 знаков, включая маркер конца строки NULL.

Значение свойства или возвращаемое значение

Функция указывает на успешное выполнение или сбой посредством перечисления PROFILE_COMMAND_STATUS. Ниже перечислены возможные возвращаемые значения.

Перечислитель

Описание

MARK_ERROR_MARKER_RESERVED

Параметр меньше или равен 0. Эти значения зарезервированы. Метка и комментарий не записываются.

MARK_ERROR_MODE_NEVER

При вызове функции для режима профилирования было задано значение NEVER. Метка и комментарий не записываются.

MARK_ERROR_MODE_OFF

При вызове функции для режима профилирования было задано значение OFF. Метка и комментарий не записываются.

MARK_ERROR_NO_SUPPORT

В данном контексте поддержка меток отсутствует. Метка и комментарий не записываются.

MARK_ERROR_OUTOFMEMORY

Недостаточно памяти для записи события. Метка и комментарий не записываются.

MARK_TEXTTOOLONG

Длина строки превышает максимальный предел (256 знаков). Строка комментария усекается, а метка и комментарий записываются.

MARK_OK

При успешном выполнении возвращается значение MARK_OK.

Заметки

Если метки и комментарии вставлены при помощи команды Mark или функций API (CommentMarkAtProfile, CommentMarkProfile или MarkProfile), профилирование для потока, который содержит функцию метки профиля, должно быть включено. Метки профилирования имеют глобальную область видимости. Например, метка профиля, вставленная в поток, может использоваться для метки начала и конца сегмента данных в любом потоке, определенном в VSP-файле.

Aa985624.alert_caution(ru-ru,VS.90).gifВажное примечание.

Метод CommentMarkAtProfile должен использоваться только при профилировании с инструментированием.

Эквивалент в .NET Framework

Microsoft.VisualStudio.Profiler.dll

Сведения о функции

Заголовок

Include VSPerf.h

Библиотека

Use VSPerf.lib

Юникод

Функция реализована как CommentMarkAtProfileW (Юникод) и CommentMarkAtProfileA (ANSI).

Пример

В следующем коде показан вызов универсальной функции CommentMarkAtProfile. Предполагается, что в этом примере используется строковый макрос Win32 и параметры компилятора для кодировки ANSI, чтобы определить, вызывается ли в коде функция, поддерживающая кодировку ANSI.

void ExerciseCommentMarkAtProfile(void)
{
    // Declare and initalize variables to pass to 
    // CommentMarkAtProfile.  The values of these 
    // parameters are assigned based on the needs 
    // of the code; and for the sake of simplicity
    // in this example, the variables are assigned
    // arbitrary values.
    int64 timeStamp = 0x1111;
    long markId = 01;
    TCHAR * markText = TEXT("Exercising CommentMarkAtProfile...");

    // Variables used to print output.
    HRESULT hResult;
    TCHAR tchBuffer[256];

    // Declare MarkOperationResult Enumerator.  
    // Holds return value from call to CommentMarkAtProfile.
    PROFILE_COMMAND_STATUS markResult;

    markResult = CommentMarkAtProfile(
        timeStamp,
        markId,
        markText);

    // Format and print result.
    LPCTSTR pszFormat = TEXT("%s %d.\0");
    TCHAR* pszTxt = TEXT("CommentMarkAtProfile returned");
    hResult = StringCchPrintf(tchBuffer, 256, pszFormat, 
    pszTxt, markResult);

#ifdef DEBUG
    OutputDebugString(tchBuffer);
#endif
}

См. также

Другие ресурсы

Справочник по API-интерфейсам профилировщика Visual Studio (машинный код)