Bagikan melalui


Fungsi CreateConsoleScreenBuffer

Penting

Dokumen ini menjelaskan fungsionalitas platform konsol yang tidak lagi menjadi bagian dari peta jalan ekosistem kami. Kami tidak menyarankan penggunaan konten ini dalam produk baru, tetapi kami akan terus mendukung penggunaan yang ada untuk masa depan yang tidak terbatas. Solusi modern pilihan kami berfokus pada urutan terminal virtual untuk kompatibilitas maksimum dalam skenario lintas platform. Anda dapat menemukan informasi selengkapnya tentang keputusan desain ini di konsol klasik vs. dokumen terminal virtual kami.

Membuat buffer layar konsol.

Sintaks

HANDLE WINAPI CreateConsoleScreenBuffer(
  _In_             DWORD               dwDesiredAccess,
  _In_             DWORD               dwShareMode,
  _In_opt_   const SECURITY_ATTRIBUTES *lpSecurityAttributes,
  _In_             DWORD               dwFlags,
  _Reserved_       LPVOID              lpScreenBufferData
);

Parameter

dwDesiredAccess [in]
Akses ke buffer layar konsol. Untuk daftar hak akses, lihat Keamanan Buffer Konsol dan Hak Akses.

dwShareMode [in]
Parameter ini bisa nol, menunjukkan bahwa buffer tidak dapat dibagikan, atau bisa berupa satu atau beberapa nilai berikut.

Value Makna
0x00000001 FILE_SHARE_READ Operasi terbuka lainnya dapat dilakukan pada buffer layar konsol untuk akses baca.
0x00000002 FILE_SHARE_WRITE Operasi terbuka lainnya dapat dilakukan pada buffer layar konsol untuk akses tulis.

lpSecurityAttributes [in, opsional]
Penunjuk ke struktur SECURITY_ATTRIBUTES yang menentukan apakah handel yang dikembalikan dapat diwariskan oleh proses turunan. Jika lpSecurityAttributes adalah NULL, handel tidak dapat diwariskan. Anggota lpSecurityDescriptor struktur menentukan deskriptor keamanan untuk buffer layar konsol baru. Jika lpSecurityAttributes adalah NULL, buffer layar konsol mendapatkan deskriptor keamanan default. ACL dalam deskriptor keamanan default untuk buffer layar konsol berasal dari token utama atau peniruan identitas pembuat.

dwFlags [in]
Jenis buffer layar konsol yang akan dibuat. Satu-satunya jenis buffer layar yang didukung adalah CONSOLE_TEXTMODE_BUFFER.

lpScreenBufferData
Dipesan; harus NULL.

Nilai hasil

Jika fungsi berhasil, nilai pengembalian adalah handel ke buffer layar konsol baru.

Jika fungsi gagal, nilai yang dikembalikan adalah INVALID_HANDLE_VALUE. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Konsol dapat memiliki beberapa buffer layar tetapi hanya satu buffer layar aktif. Buffer layar tidak aktif dapat diakses untuk membaca dan menulis, tetapi hanya buffer layar aktif yang ditampilkan. Untuk membuat buffer layar baru menjadi buffer layar aktif, gunakan fungsi SetConsoleActiveScreenBuffer.

Buffer layar yang baru dibuat akan menyalin beberapa properti dari buffer layar aktif pada saat fungsi ini dipanggil. Perilakunya adalah sebagai berikut:

  • Font - disalin dari buffer layar aktif
  • Display Window Size - disalin dari buffer layar aktif
  • Buffer Size - cocok dengan Display Window Size (TIDAK disalin)
  • Default Attributes (warna) - disalin dari buffer layar aktif
  • Default Popup Attributes (warna) - disalin dari buffer layar aktif

Proses panggilan dapat menggunakan handel yang dikembalikan dalam fungsi apa pun yang memerlukan handel ke buffer layar konsol, tunduk pada batasan akses yang ditentukan oleh parameter dwDesiredAccess .

Proses panggilan dapat menggunakan fungsi DuplicateHandle untuk membuat handel buffer layar duplikat yang memiliki akses atau pewarisan yang berbeda dari handel asli. Namun, DuplicateHandle tidak dapat digunakan untuk membuat duplikat yang valid untuk proses yang berbeda (kecuali melalui pewarisan).

Untuk menutup handel buffer layar konsol, gunakan fungsi CloseHandle.

Tip

API ini tidak disarankan tetapi memiliki perkiraan terminal virtual yang setara dalam urutan buffer layar alternatif. Mengatur buffer layar alternatif dapat menyediakan aplikasi dengan ruang terpisah yang terisolasi untuk menggambar selama runtime sesinya sambil mempertahankan konten yang ditampilkan oleh pemanggil aplikasi. Ini mempertahankan bahwa informasi menggambar untuk pemulihan sederhana pada proses keluar.

Contoh

Misalnya, lihat Membaca dan Menulis Blok Karakter dan Atribut.

Persyaratan

   
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Header ConsoleApi2.h (melalui WinCon.h, termasuk Windows.h)
Pustaka Kernel32.lib
DLL Kernel32.dll

Baca juga

Fungsi Konsol

Buffer Layar Konsol

CloseHandle

DuplikatHandle

GetConsoleScreenBufferInfo

SECURITY_ATTRIBUTES

SetConsoleActiveScreenBuffer

SetConsoleScreenBufferSize