Bagikan melalui


Fungsi CreatePipe (namedpipeapi.h)

Membuat pipa anonim, dan mengembalikan handel ke ujung baca dan tulis pipa.

Sintaksis

BOOL CreatePipe(
  [out]          PHANDLE               hReadPipe,
  [out]          PHANDLE               hWritePipe,
  [in, optional] LPSECURITY_ATTRIBUTES lpPipeAttributes,
  [in]           DWORD                 nSize
);

Parameter

[out] hReadPipe

Penunjuk ke variabel yang menerima handel baca untuk pipa.

[out] hWritePipe

Penunjuk ke variabel yang menerima handel tulis untuk pipa.

[in, optional] lpPipeAttributes

Penunjuk ke struktur SECURITY_ATTRIBUTES yang menentukan apakah handel yang dikembalikan dapat diwariskan oleh proses turunan. Jika lpPipeAttributesNULL, handel tidak dapat diwariskan.

lpSecurityDescriptor anggota struktur menentukan deskriptor keamanan untuk pipa baru. Jika lpPipeAttributesNULL, pipa mendapatkan pendeskripsi keamanan default. ACL dalam deskriptor keamanan default untuk pipa berasal dari token utama atau peniruan pembuat.

[in] nSize

Ukuran buffer untuk pipa, dalam byte. Ukurannya hanyalah saran; sistem menggunakan nilai untuk menghitung mekanisme buffering yang sesuai. Jika parameter ini nol, sistem menggunakan ukuran buffer default.

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, panggil GetLastError.

Komentar

CreatePipe membuat pipa, menetapkan ukuran pipa yang ditentukan ke buffer penyimpanan. CreatePipe juga membuat handel yang digunakan proses untuk membaca dan menulis ke buffer dalam panggilan berikutnya ke ReadFile dan fungsi WriteFile.

Untuk membaca dari pipa, proses menggunakan handel baca dalam panggilan ke fungsi ReadFile. ReadFile kembali ketika salah satu dari berikut ini benar: operasi tulis selesai pada akhir tulis pipa, jumlah byte yang diminta telah dibaca, atau terjadi kesalahan.

Ketika proses menggunakan WriteFile untuk menulis ke pipa anonim, operasi tulis tidak selesai sampai semua byte ditulis. Jika buffer pipa penuh sebelum semua byte ditulis, WriteFile tidak kembali sampai proses atau utas lain menggunakan ReadFile untuk membuat lebih banyak ruang buffer tersedia.

Pipa anonim diimplementasikan menggunakan pipa bernama dengan nama yang unik. Oleh karena itu, Anda sering dapat meneruskan handel ke pipa anonim ke fungsi yang memerlukan handel ke pipa bernama.

Jika CreatePipe gagal, konten parameter output tidak ditentukan. Tidak ada asumsi yang harus dibuat tentang kontennya dalam peristiwa ini.

Untuk membebaskan sumber daya yang digunakan oleh pipa, aplikasi harus selalu menutup handel ketika tidak lagi diperlukan, yang dicapai baik dengan memanggil fungsi CloseHandle atau ketika proses yang terkait dengan handel instans berakhir. Perhatikan bahwa instans pipa mungkin memiliki lebih dari satu handel yang terkait dengannya. Instans pipa selalu dihapus ketika handel terakhir ke instans pipa bernama ditutup.

Contoh

Misalnya, lihat Membuat Proses Anak dengan Input dan Output yang Dialihkan.

Persyaratan

Syarat Nilai
klien minimum yang didukung Windows 2000 Professional [aplikasi desktop | Aplikasi UWP]
server minimum yang didukung Windows 2000 Server [aplikasi desktop | Aplikasi UWP]
Platform Target Windows
Header namedpipeapi.h
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

Pipe Functions

Gambaran Umum Pipa

ReadFile

SECURITY_ATTRIBUTES

WriteFile