Fungsi CreateMailslotA (winbase.h)
Membuat mailslot dengan nama yang ditentukan dan mengembalikan handel yang dapat digunakan server mailslot untuk melakukan operasi pada mailslot. Mailslot bersifat lokal untuk komputer yang membuatnya. Kesalahan terjadi jika mailslot dengan nama yang ditentukan sudah ada.
Sintaks
HANDLE CreateMailslotA(
[in] LPCSTR lpName,
[in] DWORD nMaxMessageSize,
[in] DWORD lReadTimeout,
[in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
Parameter
[in] lpName
Nama mailslot. Nama ini harus memiliki formulir berikut:
\\.\mailslot\[path]name
Bidang nama harus unik. Nama dapat mencakup beberapa tingkat direktori pseudo yang dipisahkan oleh garis miring terbelakang. Misalnya, baik \\.\mailslot\example_mailslot_name dan \\.\mailslot\abc\def\ghi adalah nama yang valid.
[in] nMaxMessageSize
Ukuran maksimum satu pesan yang dapat ditulis ke mailslot, dalam byte. Untuk menentukan bahwa pesan dapat berukuran berapa pun, atur nilai ini ke nol.
[in] lReadTimeout
Waktu operasi baca dapat menunggu pesan ditulis ke mailslot sebelum waktu habis terjadi, dalam milidetik. Nilai berikut memiliki arti khusus.
Nilai | Makna |
---|---|
|
Segera mengembalikan jika tidak ada pesan. (Sistem tidak memperlakukan pengembalian segera sebagai kesalahan.) |
|
Menunggu selamanya untuk pesan. |
Nilai batas waktu ini berlaku untuk semua operasi baca berikutnya dan semua handel mailslot yang diwariskan.
[in, optional] lpSecurityAttributes
Penunjuk ke struktur SECURITY_ATTRIBUTES . Anggota bInheritHandle dari struktur menentukan apakah handel yang dikembalikan dapat diwariskan oleh proses anak. Jika lpSecurityAttributesadalah NULL, handel tidak dapat diwariskan.
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan adalah handel ke mailslot, untuk digunakan dalam operasi mailslot server. Handel yang dikembalikan oleh fungsi ini asinkron, atau tumpang tindih.
Jika fungsi gagal, nilai yang dikembalikan INVALID_HANDLE_VALUE. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Mailslot ada sampai salah satu kondisi berikut ini benar:
- Handel terakhir (mungkin diwariskan atau diduplikasi) untuk itu ditutup menggunakan fungsi CloseHandle .
- Proses yang memiliki pintu keluar yang terakhir (mungkin diwariskan atau diduplikasi) menangani keluar.
Untuk menulis pesan ke mailslot, proses menggunakan fungsi CreateFile , menentukan nama mailslot dengan menggunakan salah satu format berikut.
Format | Penggunaan |
---|---|
\\.\mailslot\name | Mengambil handel klien ke mailslot lokal. |
\\computername\mailslot\name | Mengambil handel klien ke mailslot jarak jauh. |
\\domainname\mailslot\name | Mengambil handel klien ke semua mailslots dengan nama yang ditentukan di domain yang ditentukan. |
\\*\mailslot\name | Mengambil handel klien ke semua mailslots dengan nama yang ditentukan di domain utama sistem. |
Jika CreateFile menentukan domain atau menggunakan format tanda bintang untuk menentukan domain utama sistem, aplikasi tidak dapat menulis lebih dari 424 byte pada satu waktu ke mailslot. Jika aplikasi mencoba melakukannya, fungsi WriteFile gagal dan GetLastError mengembalikan ERROR_BAD_NETPATH.
Aplikasi harus menentukan bendera FILE_SHARE_READ saat menggunakan CreateFile untuk mengambil handel klien ke mailslot.
Jika CreateFile dipanggil untuk mengakses mailslot yang tidak ada, kode kesalahan ERROR_FILE_NOT_FOUND akan diatur.
Contoh
Misalnya, lihat Membuat Mailslot.
Catatan
Header winbase.h mendefinisikan CreateMailslot sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | winbase.h (termasuk Windows.h) |
Pustaka | Kernel32.lib |
DLL | Kernel32.dll |