Fungsi CreatePipe (namedpipeapi.h)

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

Sintaks

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 anak. Jika lpPipeAttributesadalah NULL, handel tidak dapat diwariskan.

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

[in] nSize

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

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

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

Keterangan

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

Untuk membaca dari pipa, proses menggunakan handel baca dalam panggilan ke fungsi ReadFile . ReadFile mengembalikan ketika salah satu hal berikut ini benar: operasi tulis selesai pada akhir penulisan 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 mereka 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

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

Lihat juga

Fungsi Pipa

Gambaran Umum Pipa

ReadFile

SECURITY_ATTRIBUTES

WriteFile