struktur WSAPROTOCOL_INFOA (winsock2.h)

Struktur WSAPROTOCOL_INFO digunakan untuk menyimpan atau mengambil informasi lengkap untuk protokol tertentu.

Sintaks

typedef struct _WSAPROTOCOL_INFOA {
  DWORD            dwServiceFlags1;
  DWORD            dwServiceFlags2;
  DWORD            dwServiceFlags3;
  DWORD            dwServiceFlags4;
  DWORD            dwProviderFlags;
  GUID             ProviderId;
  DWORD            dwCatalogEntryId;
  WSAPROTOCOLCHAIN ProtocolChain;
  int              iVersion;
  int              iAddressFamily;
  int              iMaxSockAddr;
  int              iMinSockAddr;
  int              iSocketType;
  int              iProtocol;
  int              iProtocolMaxOffset;
  int              iNetworkByteOrder;
  int              iSecurityScheme;
  DWORD            dwMessageSize;
  DWORD            dwProviderReserved;
  CHAR             szProtocol[WSAPROTOCOL_LEN + 1];
} WSAPROTOCOL_INFOA, *LPWSAPROTOCOL_INFOA;

Anggota

dwServiceFlags1

Jenis: DWORD

Bitmask yang menjelaskan layanan yang disediakan oleh protokol. Nilai yang mungkin untuk anggota ini didefinisikan dalam file header Winsock2.h .

Nilai berikut dimungkinkan.

Nilai Makna
XP1_CONNECTIONLESS
0x00000001
Menyediakan layanan tanpa koneksi (datagram). Jika tidak diatur, protokol mendukung transfer data berorientasi koneksi.
XP1_GUARANTEED_DELIVERY
0x00000002
Menjamin bahwa semua data yang dikirim akan mencapai tujuan yang dimaksudkan.
XP1_GUARANTEED_ORDER
0x00000004
Menjamin bahwa data hanya tiba dalam urutan pengiriman dan tidak diduplikasi. Karakteristik ini tidak selalu berarti bahwa data selalu dikirimkan, tetapi bahwa data apa pun yang dikirimkan dikirimkan dalam urutan pengiriman.
XP1_MESSAGE_ORIENTED
0x00000008
Menghormati batas pesan—dibandingkan dengan protokol berorientasi aliran di mana tidak ada konsep batas pesan.
XP1_PSEUDO_STREAM
0x00000010
Protokol berorientasi pesan, tetapi batas pesan diabaikan untuk semua tanda terima. Ini nyaman ketika aplikasi tidak menginginkan pembingkaian pesan untuk dilakukan oleh protokol.
XP1_GRACEFUL_CLOSE
0x00000020
Mendukung penutupan dua fase (anggun). Jika tidak diatur, hanya penutupan abortif yang dilakukan.
XP1_EXPEDITED_DATA
0x00000040
Mendukung data yang dipercepat (mendesak).
XP1_CONNECT_DATA
0x00000080
Mendukung menyambungkan data.
XP1_DISCONNECT_DATA
0x00000100
Mendukung pemutusan sambungan data.
XP1_SUPPORT_BROADCAST
0x00000200
Mendukung mekanisme siaran.
XP1_SUPPORT_MULTIPOINT
0x00000400
Mendukung mekanisme multipoint atau multicast. Atribut sarana kontrol dan data ditunjukkan di bawah ini.
XP1_MULTIPOINT_CONTROL_PLANE
0x00000800
Menunjukkan apakah sarana kontrol berakar (nilai = 1) atau tidak dialirkan (nilai = 0).
XP1_MULTIPOINT_DATA_PLANE
0x00001000
Menunjukkan apakah bidang data berakar (nilai = 1) atau tidak dialirkan (nilai = 0).
XP1_QOS_SUPPORTED
0x00002000
Mendukung kualitas permintaan layanan.
XP1_INTERRUPT
Bit dicadangkan.
XP1_UNI_SEND
0x00008000
Protokol bersifat searah ke arah pengiriman.
XP1_UNI_RECV
0x00010000
Protokol bersifat searah ke arah recv.
XP1_IFS_HANDLES
0x00020000
Deskriptor soket yang dikembalikan oleh penyedia adalah handel sistem operasi Installable File System (IFS).
XP1_PARTIAL_MESSAGE
0x00040000
Bendera MSG_PARTIAL didukung di WSASend dan WSASendTo.
XP1_SAN_SUPPORT_SDP
0x00080000
Protokol ini menyediakan dukungan untuk SAN.

Nilai ini didukung pada Windows 7 dan Windows Server 2008 R2.

 
Catatan Hanya salah satu nilai XP1_UNI_SEND atau XP1_UNI_RECV yang dapat ditetapkan. Jika protokol dapat searah ke kedua arah, dua struktur WSAPROTOCOL_INFOW harus digunakan. Ketika tidak ada bit yang diatur, protokol dianggap dua arah.
 

dwServiceFlags2

Jenis: DWORD

Dicadangkan untuk definisi atribut protokol tambahan.

dwServiceFlags3

Jenis: DWORD

Dicadangkan untuk definisi atribut protokol tambahan.

dwServiceFlags4

Jenis: DWORD

Dicadangkan untuk definisi atribut protokol tambahan.

dwProviderFlags

Jenis: DWORD

Sekumpulan bendera yang menyediakan informasi tentang bagaimana protokol ini diwakili dalam katalog Winsock. Nilai yang mungkin untuk anggota ini didefinisikan dalam file header Winsock2.h .

Nilai bendera berikut dimungkinkan.

Nilai Makna
PFL_MULTIPLE_PROTO_ENTRIES
0x00000001
Menunjukkan bahwa ini adalah salah satu dari dua entri atau lebih untuk satu protokol (dari penyedia tertentu) yang mampu menerapkan beberapa perilaku. Contohnya adalah SPX yang, di sisi penerimaan, dapat berkinerja baik sebagai protokol berorientasi pesan atau berorientasi aliran.
PFL_RECOMMENDED_PROTO_ENTRY
0x00000002
Menunjukkan bahwa ini adalah entri yang direkomendasikan atau paling sering digunakan untuk protokol yang mampu menerapkan beberapa perilaku.
PFL_HIDDEN
0x00000004
Diatur oleh penyedia untuk menunjukkan ke Ws2_32.dll bahwa protokol ini tidak boleh dikembalikan dalam buffer hasil yang dihasilkan oleh WSAEnumProtocols. Jelas, aplikasi Windows Sockets 2 seharusnya tidak pernah melihat entri dengan set bit ini.
PFL_MATCHES_PROTOCOL_ZERO
0x00000008
Menunjukkan bahwa nilai nol dalam parameter protokolsoket atau WSASocket cocok dengan entri protokol ini.
PFL_NETWORKDIRECT_PROVIDER
0x00000010
Atur oleh penyedia untuk menunjukkan dukungan untuk akses langsung jaringan.

Nilai ini didukung pada Windows 7 dan Windows Server 2008 R2.

ProviderId

Jenis: GUID

Pengidentifikasi unik global (GUID) yang ditetapkan ke penyedia oleh vendor penyedia layanan. Nilai ini berguna untuk instans di mana lebih dari satu penyedia layanan dapat menerapkan protokol tertentu. Aplikasi dapat menggunakan anggota ProviderId untuk membedakan antara penyedia yang mungkin tidak dapat dibedakan.

dwCatalogEntryId

Jenis: DWORD

Pengidentifikasi unik yang ditetapkan oleh WS2_32.DLL untuk setiap struktur WSAPROTOCOL_INFO .

ProtocolChain

Jenis: WSAPROTOCOLCHAIN

Struktur WSAPROTOCOLCHAIN yang terkait dengan protokol. Jika panjang rantai adalah 0, entri WSAPROTOCOL_INFO ini mewakili protokol berlapis yang memiliki Windows Sockets 2 SPI sebagai tepi atas dan bawahnya. Jika panjang rantai sama dengan 1, entri ini mewakili protokol dasar yang pengidentifikasi Entri Katalognya berada di anggota dwCatalogEntryId dari struktur WSAPROTOCOL_INFO . Jika panjang rantai lebih besar dari 1, entri ini mewakili rantai protokol yang terdiri dari satu atau beberapa protokol berlapis di atas protokol dasar. Pengidentifikasi Entri Katalog yang sesuai berada dalam array ProtocolChain.ChainEntries yang dimulai dengan protokol berlapis di bagian atas (elemen nol dalam array ProtocolChain.ChainEntries) dan diakhir dengan protokol dasar. Lihat spesifikasi Antarmuka Penyedia Layanan Windows Sockets 2 untuk informasi selengkapnya tentang rantai protokol.

iVersion

Jenis: int

Pengidentifikasi versi protokol.

iAddressFamily

Jenis: int

Nilai yang akan diteruskan sebagai parameter keluarga alamat ke fungsi soket atau WSASocket untuk membuka soket untuk protokol ini. Nilai ini juga secara unik mendefinisikan struktur alamat protokol untuk sockaddr yang digunakan oleh protokol.

Pada Windows SDK yang dirilis untuk Windows Vista dan yang lebih baru, nilai yang mungkin untuk keluarga alamat ditentukan dalam file header Ws2def.h . Perhatikan bahwa file header Ws2def.h secara otomatis disertakan dalam Winsock2.h, dan tidak boleh digunakan secara langsung.

Pada versi Platform SDK untuk Windows Server 2003 dan yang lebih lama, nilai yang mungkin untuk keluarga alamat ditentukan dalam file header Winsock2.h .

Nilai yang saat ini didukung adalah AF_INET atau AF_INET6, yang merupakan format keluarga alamat Internet untuk IPv4 dan IPv6. Opsi lain untuk keluarga alamat (AF_NETBIOS untuk digunakan dengan NetBIOS, misalnya) didukung jika penyedia layanan Soket Windows untuk keluarga alamat diinstal. Perhatikan bahwa nilai untuk keluarga alamat AF_ dan konstanta keluarga protokol PF_ identik (misalnya, AF_INET dan PF_INET), sehingga konstanta dapat digunakan.

Tabel di bawah ini mencantumkan nilai umum untuk keluarga alamat meskipun banyak nilai lain dimungkinkan.

iAddressFamily Makna
AF_INET
2
Keluarga alamat Protokol Internet versi 4 (IPv4).
AF_IPX
6
Keluarga alamat IPX/SPX. Keluarga alamat ini hanya didukung jika protokol Transport yang Kompatibel dengan NWLink IPX/SPX NetBIOS diinstal.

Keluarga alamat ini tidak didukung pada Windows Vista dan yang lebih baru.

AF_APPLETALK
16
Keluarga alamat AppleTalk. Keluarga alamat ini hanya didukung jika protokol AppleTalk diinstal.

Keluarga alamat ini tidak didukung pada Windows Vista dan yang lebih baru.

AF_NETBIOS
17
Keluarga alamat NetBIOS. Keluarga alamat ini hanya didukung jika penyedia Windows Sockets untuk NetBIOS diinstal.

Penyedia Windows Sockets untuk NetBIOS didukung pada Windows versi 32-bit. Penyedia ini diinstal secara default pada Windows versi 32-bit.

Penyedia Windows Sockets untuk NetBIOS tidak didukung pada windows versi 64-bit termasuk Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003, atau Windows XP.

Penyedia Soket Windows untuk NetBIOS hanya mendukung soket tempat parameter jenis diatur ke SOCK_DGRAM.

Penyedia Soket Windows untuk NetBIOS tidak terkait langsung dengan antarmuka pemrograman NetBIOS . Antarmuka pemrograman NetBIOS tidak didukung pada Windows Vista, Windows Server 2008, dan yang lebih baru.

AF_INET6
23
Keluarga alamat Protokol Internet versi 6 (IPv6).
AF_IRDA
26
Keluarga alamat Asosiasi Data Inframerah (IrDA).

Keluarga alamat ini hanya didukung jika komputer memiliki port inframerah dan pengandar yang terinstal.

AF_BTH
32
Keluarga alamat Bluetooth.

Keluarga alamat ini didukung pada Windows XP dengan SP2 atau yang lebih baru jika komputer memiliki adaptor Bluetooth dan pengandar yang terinstal.

iMaxSockAddr

Jenis: int

Panjang alamat maksimum, dalam byte.

iMinSockAddr

Jenis: int

Panjang alamat minimum, dalam byte.

iSocketType

Jenis: int

Nilai yang akan diteruskan sebagai parameter jenis soket ke fungsi soket atau WSASocket untuk membuka soket untuk protokol ini. Nilai yang mungkin untuk jenis soket ditentukan dalam file header Winsock2.h .

Tabel berikut ini mencantumkan nilai yang mungkin untuk anggota iSocketType yang didukung untuk Windows Sockets 2:

iSocketType Makna
SOCK_STREAM
1
Jenis soket yang menyediakan aliran byte berbasis koneksi berurutan, andal, dua arah, dengan mekanisme transmisi data OOB. Jenis soket ini menggunakan Protokol Kontrol Transmisi (TCP) untuk keluarga alamat Internet (AF_INET atau AF_INET6).
SOCK_DGRAM
2
Jenis soket yang mendukung datagram, yang merupakan buffer tanpa koneksi dan tidak dapat diandalkan dengan panjang maksimum tetap (biasanya kecil). Jenis soket ini menggunakan Protokol Datagram Pengguna (UDP) untuk keluarga alamat Internet (AF_INET atau AF_INET6).
SOCK_RAW
3
Jenis soket yang menyediakan soket mentah yang memungkinkan aplikasi memanipulasi header protokol lapisan atas berikutnya. Untuk memanipulasi header IPv4, opsi soket IP_HDRINCL harus diatur pada soket. Untuk memanipulasi header IPv6, opsi soket IPV6_HDRINCL harus diatur pada soket.
SOCK_RDM
4
Jenis soket yang menyediakan datagram pesan yang andal. Contoh dari jenis ini adalah implementasi protokol multicast Pragmatic General Multicast (PGM) di Windows, sering disebut sebagai pemrograman multicast yang andal.

Nilai ini hanya didukung jika Reliable Multicast Protocol diinstal.

SOCK_SEQPACKET
5
Jenis soket yang menyediakan paket pseudo-stream berdasarkan datagram.

iProtocol

Jenis: int

Nilai yang akan diteruskan sebagai parameter protokol ke fungsi soket atau WSASocket untuk membuka soket untuk protokol ini. Opsi yang mungkin untuk anggota iProtocol khusus untuk keluarga alamat dan jenis soket yang ditentukan.

Pada Windows SDK yang dirilis untuk Windows Vista dan yang lebih baru, anggota ini dapat menjadi salah satu nilai dari jenis enumerasi IPPROTO yang ditentukan dalam file header Ws2def.h . Perhatikan bahwa file header Ws2def.h secara otomatis disertakan dalam Winsock2.h, dan tidak boleh digunakan secara langsung.

Pada versi Platform SDK untuk Windows Server 2003 dan yang lebih lama, nilai yang mungkin untuk anggota iProtocol ditentukan dalam file header Winsock2.h dan Wsrm.h .

Tabel di bawah ini mencantumkan nilai umum untuk iProtocol meskipun banyak nilai lain dimungkinkan.

iProtocol Makna
IPPROTO_ICMP
1
Protokol Pesan Kontrol Internet (ICMP).

Nilai ini didukung pada Windows XP dan yang lebih baru.

IPPROTO_IGMP
2
Protokol Manajemen Grup Internet (IGMP).

Nilai ini didukung pada Windows XP dan yang lebih baru.

BTHPROTO_RFCOMM
3
Protokol Komunikasi Frekuensi Radio Bluetooth (Bluetooth RFCOMM).

Nilai ini didukung pada Windows XP dengan SP2 atau yang lebih baru.

IPPROTO_TCP
6
Protokol Kontrol Transmisi (TCP).
IPPROTO_UDP
17
Protokol Datagram Pengguna (UDP).
IPPROTO_ICMPV6
58
Protokol Pesan Kontrol Internet Versi 6 (ICMPv6).

Nilai ini didukung pada Windows XP dan yang lebih baru.

IPPROTO_RM
113
Protokol PGM untuk multicast yang andal. Pada Windows SDK yang dirilis untuk Windows Vista dan yang lebih baru, protokol ini juga disebut IPPROTO_PGM.

Nilai ini hanya didukung jika Reliable Multicast Protocol diinstal.

iProtocolMaxOffset

Jenis: int

Nilai maksimum yang dapat ditambahkan ke iProtocol saat menyediakan nilai untuk parameter protokol ke fungsi soket atau WSASocket . Tidak semua protokol mengizinkan rentang nilai. Ketika ini adalah kasus iProtocolMaxOffset adalah nol.

iNetworkByteOrder

Jenis: int

Saat ini nilai-nilai ini adalah konstanta manifes (BIGENDIAN dan LITTLEENDIAN) yang menunjukkan big-endian atau little-endian dengan nilai masing-masing 0 dan 1.

iSecurityScheme

Jenis: int

Jenis skema keamanan yang digunakan (jika ada). Nilai SECURITY_PROTOCOL_NONE (0) digunakan untuk protokol yang tidak menggabungkan ketentuan keamanan.

dwMessageSize

Jenis: DWORD

Ukuran pesan maksimum, dalam byte, didukung oleh protokol. Ini adalah ukuran maksimum yang dapat dikirim dari salah satu antarmuka lokal host. Untuk protokol yang tidak mendukung pembingkaian pesan, maksimum aktual yang dapat dikirim ke alamat tertentu mungkin kurang. Tidak ada ketentuan standar untuk menentukan ukuran pesan masuk maksimum. Nilai khusus berikut didefinisikan.

Nilai Makna
0
Protokol berorientasi aliran dan karenanya konsep ukuran pesan tidak relevan.
0x1
Ukuran pesan keluar maksimum (kirim) tergantung pada MTU jaringan yang mendasar (unit transmisi berukuran maksimum) dan karenanya tidak dapat diketahui sampai setelah soket terikat. Aplikasi harus menggunakan getsockopt untuk mengambil nilai SO_MAX_MSG_SIZE setelah soket terikat ke alamat lokal.
0xFFFFFFFF
Protokol berorientasi pesan, tetapi tidak ada batas maksimum untuk ukuran pesan yang mungkin dikirimkan.

dwProviderReserved

Jenis: DWORD

Dicadangkan untuk digunakan oleh penyedia layanan.

szProtocol[WSAPROTOCOL_LEN + 1]

Jenis: TCHAR[WSAPROTOCOL_LEN+1]

Array karakter yang berisi nama yang dapat dibaca manusia yang mengidentifikasi protokol, misalnya "MSAFD Tcpip [UDP/IP]". Jumlah maksimum karakter yang diizinkan WSAPROTOCOL_LEN, yang didefinisikan menjadi 255.

Keterangan

Catatan

Header winsock2.h mendefinisikan WSAPROTOCOL_INFO 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]
Header winsock2.h

Lihat juga

WSAEnumProtocols

WSAPROTOCOLCHAIN

WSAPROTOCOL_INFOW

WSASend

WSASendTo

WSASocket

WSCInstallProvider

WSCInstallProvider64_32

WSCUpdateProvider

WSCUpdateProvider32

getsockopt

soket