Bagikan melalui


Operasi Pipa Anonim

FungsiCreatePipe membuat pipa anonim dan mengembalikan dua handel: handel baca ke pipa dan handel tulis ke pipa. Handel baca memiliki akses baca-saja ke pipa, dan handel tulis memiliki akses tulis-saja ke pipa. Untuk berkomunikasi menggunakan pipa, server pipa harus meneruskan handel pipa ke proses lain. Biasanya, ini dilakukan melalui warisan; artinya, proses memungkinkan handel diwariskan oleh proses anak. Proses ini juga dapat menduplikasi handel pipa menggunakan fungsiDuplikatHandle dan mengirimkannya ke proses yang tidak terkait menggunakan beberapa bentuk komunikasi antarproses, seperti DDE atau memori bersama.

Server pipa dapat mengirim handel baca atau handel tulis ke klien pipa, tergantung pada apakah klien harus menggunakan pipa anonim untuk mengirim informasi atau menerima informasi. Untuk membaca dari pipa, gunakan handel baca pipa dalam panggilan ke fungsiReadFile. Panggilan ReadFile kembali ketika proses lain telah ditulis ke pipa. Panggilan ReadFile juga dapat kembali jika semua handel tulis ke pipa telah ditutup atau jika kesalahan terjadi sebelum operasi baca selesai.

Untuk menulis ke pipa, gunakan handel tulis pipa dalam panggilan ke fungsiWriteFile. Panggilan WriteFile tidak kembali sampai menulis jumlah byte yang ditentukan ke pipa atau terjadi kesalahan. Jika buffer pipa penuh dan ada lebih banyak byte yang akan ditulis, WriteFile tidak kembali sampai proses lain dibaca dari pipa, membuat lebih banyak ruang buffer tersedia. Server pipa menentukan ukuran buffer untuk pipa saat memanggil CreatePipe.

Operasi baca dan tulis asinkron (tumpang tindih) tidak didukung oleh pipa anonim. Ini berarti Anda tidak dapat menggunakanReadFileExdan fungsi WriteFileEx dengan pipa anonim. Selain itu, parameter lpOverlappedReadFile danWriteFilediabaikan ketika fungsi-fungsi ini digunakan dengan pipa anonim.

Pipa anonim ada sampai semua handel pipa, baik baca maupun tulis, telah ditutup. Proses dapat menutup handel pipanya dengan menggunakan fungsicloseHandle. Semua handel pipa juga ditutup ketika proses berakhir.

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.