Bagikan melalui


Fungsi InitOnceBeginInitialize (synchapi.h)

Memulai inisialisasi satu kali.

Sintaks

BOOL InitOnceBeginInitialize(
  [in, out]       LPINIT_ONCE lpInitOnce,
  [in]            DWORD       dwFlags,
  [out]           PBOOL       fPending,
  [out, optional] LPVOID      *lpContext
);

Parameter

[in, out] lpInitOnce

Penunjuk ke struktur inisialisasi satu kali.

[in] dwFlags

Parameter ini dapat memiliki nilai 0, atau satu atau beberapa bendera berikut.

Nilai Makna
INIT_ONCE_ASYNC
0x000000002UL
Memungkinkan beberapa upaya inisialisasi untuk dijalankan secara paralel. Jika bendera ini digunakan, panggilan berikutnya ke fungsi ini akan gagal kecuali bendera ini juga ditentukan.
INIT_ONCE_CHECK_ONLY
0x00000001UL
Panggilan fungsi ini tidak memulai inisialisasi. Nilai yang dikembalikan menunjukkan apakah inisialisasi telah selesai. Jika fungsi mengembalikan TRUE, parameter lpContext menerima data.

[out] fPending

Jika fungsi berhasil, parameter ini menunjukkan status inisialisasi saat ini.

Jika parameter ini TRUE dan dwFlags berisi INIT_ONCE_CHECK_ONLY, inisialisasi tertunda dan data konteks tidak valid.

Jika parameter ini FALSE, inisialisasi telah selesai dan pemanggil dapat mengambil data konteks dari parameter lpContext .

Jika parameter ini TRUE dan dwFlags tidak berisi INIT_ONCE_CHECK_ONLY, inisialisasi telah dimulai dan pemanggil dapat melakukan tugas inisialisasi.

[out, optional] lpContext

Parameter opsional yang menerima data yang disimpan dengan struktur inisialisasi satu kali setelah berhasil. Bit INIT_ONCE_CTX_RESERVED_BITS data berurutan rendah selalu nol.

Nilai kembali

Jika INIT_ONCE_CHECK_ONLY tidak ditentukan dan fungsi berhasil, nilai yang dikembalikan adalah TRUE.

Jika INIT_ONCE_CHECK_ONLY ditentukan dan inisialisasi telah selesai, nilai yang dikembalikan adalah TRUE.

Jika tidak, nilai yang dikembalikan adalah FALSE.

Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Fungsi ini dapat digunakan untuk inisialisasi satu kali sinkron atau asinkron. Untuk inisialisasi satu kali asinkron, gunakan bendera INIT_ONCE_ASYNC . Untuk menentukan fungsi panggilan balik yang akan dijalankan selama inisialisasi satu kali yang sinkron, lihat fungsi InitOnceExecuteOnce .

Jika fungsi ini berhasil, utas dapat membuat objek sinkronisasi dan menentukan dalam parameter lpContext dari fungsi InitOnceComplete .

Untuk mengkompilasi aplikasi yang menggunakan fungsi ini, tentukan _WIN32_WINNT sebagai 0x0600 atau yang lebih baru. Untuk informasi selengkapnya, lihat Menggunakan Header Windows.

Objek inisialisasi satu kali tidak dapat dipindahkan atau disalin. Proses tidak boleh mengubah objek inisialisasi, dan sebaliknya harus memperlakukannya sebagai buram logis. Hanya gunakan fungsi inisialisasi satu kali untuk mengelola objek inisialisasi satu kali.

Contoh

Untuk contoh yang menggunakan fungsi ini, lihat Menggunakan Inisialisasi One-Time

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header synchapi.h (termasuk Windows.h pada Windows 7, Windows Server 2008 Windows Server 2008 R2)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

InitOnceComplete

InitOnceExecuteOnce

Inisialisasi Satu Kali

Fungsi Sinkronisasi