StartProfile
更新:2007 年 11 月
StartProfile 函式會將指定之分析層級的計數器設為 1 (on)。
PROFILE_COMMAND_STATUS PROFILERAPI StartProfile(
PROFILE_CONTROL_LEVEL Level,
unsigned int dwId);
參數
Level
表示可套用效能資料集合的設定檔層級。下列 PROFILE_CONTROL_LEVEL 列舉值可用來表示可套用效能資料集合之三個層級中的一個層級:
列舉值 |
描述 |
---|---|
PROFILE_GLOBALLEVEL |
全域層級設定會影響程式碼剖析回合中的所有處理序和執行緒。 |
PROFILE_PROCESSLEVEL |
處理序層級設定會影響屬於指定之處理序的所有執行緒。 |
PROFILE_THREADLEVEL |
執行緒分析層級設定會影響指定的執行緒。 |
dwId
由系統產生的處理序或執行緒識別項。
屬性值/傳回值
此函式會使用 PROFILE_COMMAND_STATUS 列舉型別來表示成功或失敗。傳回值可以是下列其中之一:
列舉值 |
描述 |
---|---|
PROFILE_ERROR_ID_NOEXIST |
分析項目 ID 不存在。 |
PROFILE_ERROR_LEVEL_NOEXIST |
所指定的分析層級不存在。 |
PROFILE_ERROR_MODE_NEVER |
當呼叫函式時,分析模式是設定為 NEVER。 |
PROFILE_ERROR_NOT_YET_IMPLEMENTED |
尚未實作分析函式呼叫、分析層級,或呼叫與層級的組合。 |
PROFILE_OK |
呼叫成功。 |
備註
StartProfile 和 StopProfile 會控制分析層級的開始/停止狀態。開始/停止的預設值為 1。初始值可以在登錄中變更。每個對 StartProfile 的呼叫會將開始/停止設定為 1;而每個對 StopProfile 的呼叫會將開始/停止設定為 0。
當開始/停止大於 0 時,該層級的開始/停止狀態會為 ON。當它小於或等於 0 時,開始/停止狀態則為 OFF。
當 Start/Stop 狀態和 Suspend/Resume 狀態兩者都為 ON 時,此層級的分析狀態就會是 ON。對於要分析的執行緒,該執行緒的全域、處理序和執行緒層級狀態都必須為 ON。
.NET Framework 對等用法
Microsoft.VisualStudio.Profiler.dll
功能資訊
標頭:在 VSPerf.h 中宣告
匯入程式庫:VSPerf.lib
範例
下列範例將說明 StartProfile 函式呼叫。
void ExerciseStartProfile()
{
// StartProfile and StopProfile control the
// Start/Stop state for the profiling level.
// The default initial value of Start/Stop is 1.
// The initial value can be changed in the registry.
// Each call to StartProfile sets Start/Stop to 1;
// each call to StopProfile sets it to 0.
// Variables used to print output.
HRESULT hResult;
TCHAR tchBuffer[256];
// Declare enumeration to hold return value of
// the call to StartProfile.
PROFILE_COMMAND_STATUS profileResult;
profileResult = StartProfile(
PROFILE_THREADLEVEL,
PROFILE_CURRENTID);
// Format and print result.
LPCTSTR pszFormat = TEXT("%s %d.\0");
TCHAR* pszTxt = TEXT("StartProfile returned");
hResult = StringCchPrintf(tchBuffer, 256, pszFormat,
pszTxt, profileResult);
#ifdef DEBUG
OutputDebugString(tchBuffer);
#endif
}