Bagikan melalui


Fungsi OperationStart (winbase.h)

Memberi tahu sistem bahwa aplikasi akan memulai operasi.

Jika aplikasi memanggil OperationStart dengan nilai OPERATION_ID yang valid, sistem merekam pola akses file operasi yang ditentukan hingga OperationEnd dipanggil untuk ID operasi yang sama. Rekaman ini disimpan dalam file prefetch filename.pf . Setiap panggilan ke OperationStart harus diikuti dengan panggilan ke OperationEnd, jika tidak, catatan operasi dibuang setelah 10 detik.

Jika aplikasi memanggil OperationStart untuk ID operasi tempat file prefetch ada, sistem memuat file operasi ke dalam memori sebelum menjalankan operasi. Proses perekaman tetap sama dan sistem memperbarui file prefetch filename.pf yang sesuai.

Sintaks

BOOL OperationStart(
  [in] OPERATION_START_PARAMETERS *OperationStartParams
);

Parameter

[in] OperationStartParams

Struktur _OPERATION_START_PARAMETERS yang menentukan VERSION, OPERATION_ID , dan FLAGS.

Nilai kembali

TRUE untuk semua parameter yang valid dan FALSE jika tidak. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Versi struktur _OPERATION_START_PARAMETERS didefinisikan sebagai OPERATION_API_VERSION di Windows SDK.

Karena fungsi OperationStart sinkron, dibutuhkan beberapa detik untuk kembali. Ini harus dihindari dalam utas UI untuk responsivitas terbaik.

Ada satu instans perekam operasi dalam proses. Meskipun API perekam operasi dapat dipanggil dari beberapa utas dalam proses, semua panggilan bertindak pada satu instans.

Pelacakan peluncuran aplikasi berlangsung selama 10 detik pertama dari masa proses. OperationStart harus dipanggil setelah akhir pelacakan peluncuran aplikasi oleh sistem.

Setiap panggilan ke OperationStart harus diikuti dengan panggilan ke OperationEnd. Jika tidak, pelacakan operasi akan dibuang setelah sekitar 10 detik.

Jumlah maksimum operasi yang dapat direkam pada sistem tertentu dapat dikonfigurasi. Jika maksimum ini terlampaui, file prefetch yang terakhir digunakan diganti.

Pada Windows 8, fungsionalitas ini mengharuskan layanan Superfetch diaktifkan. Windows 8 akan mengaktifkan layanan secara default. Untuk Windows Server 2012, fungsionalitas prefetching ini perlu diaktifkan dan dinonaktifkan sesuai kebutuhan. Ini dapat dilakukan menggunakan cmdlet PowerShell berbasis CIM. Fungsionalitas prefetcher dapat diekspos menggunakan kelas CIMdari CIM_PrefetcherService.

Contoh

    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());
                  }


Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8 [khusus aplikasi desktop]
Server minimum yang didukung Windows Server 2012 [hanya aplikasi desktop]
Target Platform Windows
Header winbase.h (termasuk Windows.h)
Pustaka Advapi32.lib
DLL Advapi32.dll

Lihat juga

OPERATION_ID

Perekam Operasi

OperationEnd

_OPERATION_END_PARAMETERS

_OPERATION_START_PARAMETERS