NameProfile
Mise à jour : novembre 2007
La fonction NameProfile assigne une chaîne au processus ou au thread spécifié.
L'API NameProfile est uniquement disponible pour le profilage d'instrumentation. L'API NameProfile n'est pas prise en charge pour le profilage d'échantillonnage.
PROFILE_COMMAND_STATUS PROFILERAPI NameProfile(
LPCTSTR pszName,
PROFILE_CONTROL_LEVEL Level,
unsigned int dwId);
Paramètres
pszName
Nom de l'élément de profilage. Un nom n'est pas valide (provoquant le retour par NameProfileA de NAME_ERROR_INVALID_NAME) si :
Le pointeur passé dans NameProfileA est une valeur NULL
Les données de type chaîne de pszName commencent par un nombre
Les données de type chaîne de pszName contiennent un espace
Les données de type chaîne de pszName contiennent chacun des caractères suivants : ;. '~! @ #$% ^ & * () = [] {} | \?/< >
Level
Indique le niveau de profil auquel la collecte de données de performance peut être appliquée. Les énumérateurs PROFILE_CONTROL_LEVEL suivants permettent d'indiquer l'un des trois niveaux auxquels la collecte de données de performance peut être appliquée :
dwId
Identificateur du niveau de profilage. Utilisez l'identificateur de processus ou de thread généré par le système.
Valeur de propriété/valeur de retour
La fonction indique la réussite ou l'échec en utilisant l'énumération PROFILE_COMMAND_STATUS. La valeur de retour peut être l'une des suivantes :
Énumérateur |
Description |
---|---|
NAME_ERROR_ID_NOEXIST |
L'élément de profilage spécifié n'existe pas. |
NAME_ERROR_INVALID_NAME |
Le nom n'est pas valide. |
NAME_ERROR_LEVEL_NOEXIST |
Le niveau de profil spécifié n'existe pas. |
NAME_ERROR_NO_SUPPORT |
L'opération spécifiée n'est pas prise en charge. |
NAME_ERROR_OUTOFMEMORY |
La mémoire n'était pas disponible pour enregistrer l'événement. |
NAME_ERROR_REDEFINITION |
Un nom a déjà été assigné à l'élément de profil. Le nom dans cette fonction est ignoré. |
NAME_ERROR_TEXTTRUNCATED |
Le texte du nom a dépassé 32 caractères y compris le caractère Null et a été donc tronqué. |
NAME_OK |
Le nom a été enregistré avec succès. |
Notes
Un seul nom peut être assigné à chaque processus ou thread. Une fois qu'un élément de profilage est nommé, les appels suivants à NameProfile pour cet élément sont ignorés.
Si le même nom est attribué à des threads ou processus différents, le rapport inclura les données de tous les éléments à ce niveau avec ce nom.
Si vous spécifiez un processus ou un thread différent de l'actuel, vous devez vérifier qu'il a été initialisé et qu'il a commencé à s'exécuter avant de le nommer. Sinon, la méthode NameProfile échoue.
Remarque importante : |
---|
Les fonctions d'API CreateProcess() et CreateThread() peuvent être retournées avant que le thread ou le processus ne soit initialisé. |
Équivalent .NET Framework
Microsoft.VisualStudio.Profiler.dll
Informations sur la fonction
En-tête |
Inclure VSPerf.h |
Bibliothèque |
Utiliser VSPerf.lib |
Unicode |
Implémenté en tant que NameProfileW (Unicode) et NameProfileA (ANSI). |
Exemple
Le code suivant illustre l'appel de la fonction NameProfile. L'exemple suppose l'utilisation des macros de chaîne Win32 et des paramètres du compilateur pour ANSI afin de déterminer si le code appelle la fonction compatible ANSI.
void ExerciseNameProfile()
{
// Variables used to print output.
HRESULT hResult;
TCHAR tchBuffer[256];
// Create and initialize variables to pass to
// ExerciseNameProfile. The value of this
// parameter is based on the needs of the code;
// and for the sake of simplicity in this example,
// the variable is assigned an arbitrary value.
TCHAR * profileName = TEXT("ExerciseNameProfile");
// Declare enumeration to hold result of call to
// ExerciseNameProfle.
PROFILE_COMMAND_STATUS nameResult;
nameResult = NameProfile(
profileName,
PROFILE_GLOBALLEVEL,
PROFILE_CURRENTID);
// Format and print result.
LPCTSTR pszFormat = TEXT("%s %d.\0");
TCHAR* pszTxt = TEXT("NameProfile returned");
hResult = StringCchPrintf(tchBuffer, 256, pszFormat,
pszTxt, nameResult);
#ifdef DEBUG
OutputDebugString(tchBuffer);
#endif
}
Voir aussi
Autres ressources
Référence des API du générateur de profils Visual Studio (Native)