OperationStart-Funktion (winbase.h)
Benachrichtigt das System, dass die Anwendung einen Vorgang startet.
Wenn eine Anwendung OperationStart mit einem gültigen OPERATION_ID-Wert aufruft, zeichnet das System die Dateizugriffsmuster des angegebenen Vorgangs auf, bis OperationEnd für dieselbe Vorgangs-ID aufgerufen wird. Dieser Datensatz wird in einer filename.pf Vorabrufdatei gespeichert. Jedem Aufruf von OperationStart muss ein Aufruf von OperationEnd folgen, andernfalls wird der Datensatz des Vorgangs nach 10 Sekunden verworfen.
Wenn eine Anwendung OperationStart für eine Vorgangs-ID aufruft, für die eine Vorabrufdatei vorhanden ist, lädt das System die Dateien des Vorgangs in den Arbeitsspeicher, bevor der Vorgang ausgeführt wird. Der Aufzeichnungsprozess bleibt unverändert, und das System aktualisiert die entsprechende filename.pf Vorabrufdatei.
Syntax
BOOL OperationStart(
[in] OPERATION_START_PARAMETERS *OperationStartParams
);
Parameter
[in] OperationStartParams
Eine _OPERATION_START_PARAMETERS-Struktur , die VERSION, OPERATION_ID und FLAGS angibt.
Rückgabewert
TRUE für alle gültigen Parameter, andernfalls FALSE . Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Hinweise
Die Version der _OPERATION_START_PARAMETERS-Struktur ist im Windows SDK als OPERATION_API_VERSION definiert.
Da die OperationStart-Funktion synchron ist, kann die Rückgabe einige Sekunden dauern. Dies sollte in UI-Threads vermieden werden, um eine optimale Reaktionsfähigkeit zu erzielen.
Es gibt eine einzelne instance des Vorgangsschreibers in einem Prozess. Obwohl die Vorgangsaufzeichnungs-APIs von mehreren Threads innerhalb des Prozesses aufgerufen werden können, werden alle Aufrufe auf den einzelnen instance.
Die Ablaufverfolgung des Anwendungsstarts dauert die ersten 10 Sekunden der Prozesslebensdauer. OperationStart sollte nach dem Ende des Anwendungsstarts vom System aufgerufen werden.
Jedem Aufruf von OperationStart muss ein Aufruf von OperationEnd folgen. Andernfalls wird die Vorgangsablaufverfolgung nach etwa 10 Jahren verworfen.
Die maximale Anzahl von Vorgängen, die für ein bestimmtes System aufgezeichnet werden können, ist konfigurierbar. Wenn dieser Höchstwert überschritten wird, werden die zuletzt verwendeten Vorabrufdateien ersetzt.
Auf Windows 8 muss für diese Funktionalität der Superfetch-Dienst aktiviert sein. Windows 8 ist der Dienst standardmäßig aktiviert. Für Windows Server 2012 muss diese Vorabruffunktion bei Bedarf aktiviert und deaktiviert werden. Dies kann mithilfe von CIM-basierten PowerShell-Cmdlets erfolgen. Die Prefetcherfunktionalität kann mithilfe der CIM-Klasse des CIM_PrefetcherService verfügbar gemacht werden.
Beispiele
BOOL Success;
DWORD ErrorCode;
OPERATION_START_PARAMETERS OpStart;
OPERATION_END_PARAMETERS OpEnd;
// We want to notify Windows that we are going to be performing some
// disk-bound work that repeatedly access the same file data. The system will
// try to record data about our activity to make future operations faster.
ZeroMemory(&OpStart, sizeof(OpStart));
OpStart.Version = OPERATION_API_VERSION;
OpStart.OperationId = MY_OPERATION_ID_1;
ZeroMemory(&OpEnd, sizeof(OpEnd));
OpEnd.Version = OPERATION_API_VERSION;
OpEnd.OperationId = MY_OPERATION_ID_1;
// We want the system to only record activity in this thread.
OpStart.Flags = OPERATION_START_TRACE_CURRENT_THREAD;
OpEnd.Flags = 0;
Success = OperationStart(&OpStart);
if (!Success) {
ErrorCode = GetLastError();
fprintf(stderr, "OperationStart failed: %d\n", ErrorCode);
// We could not notify the system about our operation. That's OK.
}
// Perform the disk-bound work that should be recorded here.
// This may involve opening/reading many files or loading
// and running many DLLs.
Success = OperationEnd(&OpEnd);
if (!Success) {
fprintf(stderr, "OperationEnd failed: %d\n", GetLastError());
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 8 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2012 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winbase.h (Windows.h einschließen) |
Bibliothek | Advapi32.lib |
DLL | Advapi32.dll |
Weitere Informationen