Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenmsafdlib.h
Go to the documentation of this file.
00001 /* 00002 * COPYRIGHT: See COPYING in the top level directory 00003 * PROJECT: ReactOS WinSock 2 NSP 00004 * FILE: lib/mswsock/sock.h 00005 * PURPOSE: Winsock 2 SPI Utility Header 00006 */ 00007 00008 #define NO_BLOCKING_HOOK 0 00009 #define MAYBE_BLOCKING_HOOK 1 00010 #define ALWAYS_BLOCKING_HOOK 2 00011 00012 #define NO_TIMEOUT 0 00013 #define SEND_TIMEOUT 1 00014 #define RECV_TIMEOUT 2 00015 00016 #define MAX_TDI_ADDRESS_LENGTH 32 00017 00018 #define WSA_FLAG_MULTIPOINT_ALL (WSA_FLAG_MULTIPOINT_C_ROOT |\ 00019 WSA_FLAG_MULTIPOINT_C_LEAF |\ 00020 WSA_FLAG_MULTIPOINT_D_ROOT |\ 00021 WSA_FLAG_MULTIPOINT_D_LEAF) 00022 00023 00024 /* Socket State */ 00025 typedef enum _SOCKET_STATE 00026 { 00027 SocketUndefined = -1, 00028 SocketOpen, 00029 SocketBound, 00030 SocketBoundUdp, 00031 SocketConnected, 00032 SocketClosed 00033 } SOCKET_STATE, *PSOCKET_STATE; 00034 00035 /* 00036 * Shared Socket Information. 00037 * It's called shared because we send it to Kernel-Mode for safekeeping 00038 */ 00039 typedef struct _SOCK_SHARED_INFO { 00040 SOCKET_STATE State; 00041 INT AddressFamily; 00042 INT SocketType; 00043 INT Protocol; 00044 INT SizeOfLocalAddress; 00045 INT SizeOfRemoteAddress; 00046 struct linger LingerData; 00047 ULONG SendTimeout; 00048 ULONG RecvTimeout; 00049 ULONG SizeOfRecvBuffer; 00050 ULONG SizeOfSendBuffer; 00051 struct { 00052 BOOLEAN Listening:1; 00053 BOOLEAN Broadcast:1; 00054 BOOLEAN Debug:1; 00055 BOOLEAN OobInline:1; 00056 BOOLEAN ReuseAddresses:1; 00057 BOOLEAN ExclusiveAddressUse:1; 00058 BOOLEAN NonBlocking:1; 00059 BOOLEAN DontUseWildcard:1; 00060 BOOLEAN ReceiveShutdown:1; 00061 BOOLEAN SendShutdown:1; 00062 BOOLEAN UseDelayedAcceptance:1; 00063 BOOLEAN UseSAN:1; 00064 }; // Flags 00065 DWORD CreateFlags; 00066 DWORD CatalogEntryId; 00067 DWORD ServiceFlags1; 00068 DWORD ProviderFlags; 00069 GROUP GroupID; 00070 DWORD GroupType; 00071 INT GroupPriority; 00072 INT SocketLastError; 00073 HWND hWnd; 00074 LONG Unknown; 00075 DWORD SequenceNumber; 00076 UINT wMsg; 00077 LONG AsyncEvents; 00078 LONG AsyncDisabledEvents; 00079 } SOCK_SHARED_INFO, *PSOCK_SHARED_INFO; 00080 00081 /* Socket Helper Data. Holds information about the WSH Libraries */ 00082 typedef struct _HELPER_DATA { 00083 LIST_ENTRY Helpers; 00084 LONG RefCount; 00085 HANDLE hInstance; 00086 INT MinWSAddressLength; 00087 INT MaxWSAddressLength; 00088 INT MinTDIAddressLength; 00089 INT MaxTDIAddressLength; 00090 BOOLEAN UseDelayedAcceptance; 00091 PWINSOCK_MAPPING Mapping; 00092 PWSH_OPEN_SOCKET WSHOpenSocket; 00093 PWSH_OPEN_SOCKET2 WSHOpenSocket2; 00094 PWSH_JOIN_LEAF WSHJoinLeaf; 00095 PWSH_NOTIFY WSHNotify; 00096 PWSH_GET_SOCKET_INFORMATION WSHGetSocketInformation; 00097 PWSH_SET_SOCKET_INFORMATION WSHSetSocketInformation; 00098 PWSH_GET_SOCKADDR_TYPE WSHGetSockaddrType; 00099 PWSH_GET_WILDCARD_SOCKADDR WSHGetWildcardSockaddr; 00100 PWSH_GET_BROADCAST_SOCKADDR WSHGetBroadcastSockaddr; 00101 PWSH_ADDRESS_TO_STRING WSHAddressToString; 00102 PWSH_STRING_TO_ADDRESS WSHStringToAddress; 00103 PWSH_IOCTL WSHIoctl; 00104 WCHAR TransportName[1]; 00105 } HELPER_DATA, *PHELPER_DATA; 00106 00107 typedef struct _ASYNC_DATA 00108 { 00109 struct _SOCKET_INFORMATION *ParentSocket; 00110 DWORD SequenceNumber; 00111 IO_STATUS_BLOCK IoStatusBlock; 00112 AFD_POLL_INFO AsyncSelectInfo; 00113 } ASYNC_DATA, *PASYNC_DATA; 00114 00115 /* The actual Socket Structure represented by a handle. Internal to us */ 00116 typedef struct _SOCKET_INFORMATION { 00117 union { 00118 WSH_HANDLE WshContext; 00119 struct { 00120 LONG RefCount; 00121 SOCKET Handle; 00122 }; 00123 }; 00124 SOCK_SHARED_INFO SharedData; 00125 GUID ProviderId; 00126 DWORD HelperEvents; 00127 PHELPER_DATA HelperData; 00128 PVOID HelperContext; 00129 PSOCKADDR LocalAddress; 00130 PSOCKADDR RemoteAddress; 00131 HANDLE TdiAddressHandle; 00132 HANDLE TdiConnectionHandle; 00133 PASYNC_DATA AsyncData; 00134 HANDLE EventObject; 00135 LONG NetworkEvents; 00136 CRITICAL_SECTION Lock; 00137 BOOL DontUseSan; 00138 PVOID SanData; 00139 } SOCKET_INFORMATION, *PSOCKET_INFORMATION; 00140 00141 /* The blob of data we send to Kernel-Mode for safekeeping */ 00142 typedef struct _SOCKET_CONTEXT { 00143 SOCK_SHARED_INFO SharedData; 00144 ULONG SizeOfHelperData; 00145 ULONG Padding; 00146 SOCKADDR LocalAddress; 00147 SOCKADDR RemoteAddress; 00148 /* Plus Helper Data */ 00149 } SOCKET_CONTEXT, *PSOCKET_CONTEXT; 00150 00151 typedef struct _SOCK_RW_LOCK 00152 { 00153 volatile LONG ReaderCount; 00154 HANDLE WriterWaitEvent; 00155 RTL_CRITICAL_SECTION Lock; 00156 } SOCK_RW_LOCK, *PSOCK_RW_LOCK; 00157 00158 typedef struct _WINSOCK_TEB_DATA 00159 { 00160 HANDLE EventHandle; 00161 SOCKET SocketHandle; 00162 PAFD_ACCEPT_DATA AcceptData; 00163 LONG PendingAPCs; 00164 BOOLEAN CancelIo; 00165 ULONG Unknown; 00166 PVOID RnrThreadData; 00167 } WINSOCK_TEB_DATA, *PWINSOCK_TEB_DATA; 00168 00169 typedef INT 00170 (WINAPI *PICF_CONNECT)(PVOID IcfData); 00171 00172 typedef struct _SOCK_ICF_DATA 00173 { 00174 HANDLE IcfHandle; 00175 PVOID IcfOpenDynamicFwPort; 00176 PICF_CONNECT IcfConnect; 00177 PVOID IcfDisconnect; 00178 HINSTANCE DllHandle; 00179 } SOCK_ICF_DATA, *PSOCK_ICF_DATA; 00180 00181 typedef PVOID 00182 (NTAPI *PRTL_HEAP_ALLOCATE)( 00183 IN HANDLE Heap, 00184 IN ULONG Flags, 00185 IN ULONG Size 00186 ); 00187 00188 extern HANDLE SockPrivateHeap; 00189 extern PRTL_HEAP_ALLOCATE SockAllocateHeapRoutine; 00190 extern SOCK_RW_LOCK SocketGlobalLock; 00191 extern PWAH_HANDLE_TABLE SockContextTable; 00192 extern LPWSPUPCALLTABLE SockUpcallTable; 00193 extern BOOL SockProcessTerminating; 00194 extern LONG SockWspStartupCount; 00195 extern DWORD SockSendBufferWindow; 00196 extern DWORD SockReceiveBufferWindow; 00197 extern HANDLE SockAsyncQueuePort; 00198 extern BOOLEAN SockAsyncSelectCalled; 00199 extern LONG SockProcessPendingAPCCount; 00200 extern HINSTANCE SockModuleHandle; 00201 extern LONG gWSM_NSPStartupRef; 00202 extern LONG gWSM_NSPCallRef; 00203 extern LIST_ENTRY SockHelperDllListHead; 00204 extern CRITICAL_SECTION MSWSOCK_SocketLock; 00205 extern HINSTANCE NlsMsgSourcemModuleHandle; 00206 extern PVOID SockBufferKeyTable; 00207 extern ULONG SockBufferKeyTableSize; 00208 extern LONG SockAsyncThreadReferenceCount; 00209 extern BOOLEAN g_fRnrLockInit; 00210 extern CRITICAL_SECTION g_RnrLock; 00211 00212 BOOL 00213 WSPAPI 00214 MSWSOCK_Initialize(VOID); 00215 00216 BOOL 00217 WSPAPI 00218 MSAFD_SockThreadInitialize(VOID); 00219 00220 INT 00221 WSPAPI 00222 SockCreateAsyncQueuePort(VOID); 00223 00224 PVOID 00225 WSPAPI 00226 SockInitializeHeap(IN HANDLE Heap, 00227 IN ULONG Flags, 00228 IN ULONG Size); 00229 00230 NTSTATUS 00231 WSPAPI 00232 SockInitializeRwLockAndSpinCount( 00233 IN PSOCK_RW_LOCK Lock, 00234 IN ULONG SpinCount 00235 ); 00236 00237 VOID 00238 WSPAPI 00239 SockAcquireRwLockExclusive(IN PSOCK_RW_LOCK Lock); 00240 00241 VOID 00242 WSPAPI 00243 SockAcquireRwLockShared(IN PSOCK_RW_LOCK Lock); 00244 00245 VOID 00246 WSPAPI 00247 SockReleaseRwLockExclusive(IN PSOCK_RW_LOCK Lock); 00248 00249 VOID 00250 WSPAPI 00251 SockReleaseRwLockShared(IN PSOCK_RW_LOCK Lock); 00252 00253 NTSTATUS 00254 WSPAPI 00255 SockDeleteRwLock(IN PSOCK_RW_LOCK Lock); 00256 00257 INT 00258 WSPAPI 00259 SockGetConnectData(IN PSOCKET_INFORMATION Socket, 00260 IN ULONG Ioctl, 00261 IN PVOID Buffer, 00262 IN ULONG BufferLength, 00263 OUT PULONG BufferReturned); 00264 00265 INT 00266 WSPAPI 00267 SockIsAddressConsistentWithConstrainedGroup(IN PSOCKET_INFORMATION Socket, 00268 IN GROUP Group, 00269 IN PSOCKADDR SocketAddress, 00270 IN INT SocketAddressLength); 00271 00272 BOOL 00273 WSPAPI 00274 SockWaitForSingleObject(IN HANDLE Handle, 00275 IN SOCKET SocketHandle, 00276 IN DWORD BlockingFlags, 00277 IN DWORD TimeoutFlags); 00278 00279 BOOLEAN 00280 WSPAPI 00281 SockIsSocketConnected(IN PSOCKET_INFORMATION Socket); 00282 00283 INT 00284 WSPAPI 00285 SockNotifyHelperDll(IN PSOCKET_INFORMATION Socket, 00286 IN DWORD Event); 00287 00288 INT 00289 WSPAPI 00290 SockUpdateWindowSizes(IN PSOCKET_INFORMATION Socket, 00291 IN BOOLEAN Force); 00292 00293 INT 00294 WSPAPI 00295 SockBuildTdiAddress(OUT PTRANSPORT_ADDRESS TdiAddress, 00296 IN PSOCKADDR Sockaddr, 00297 IN INT SockaddrLength); 00298 00299 INT 00300 WSPAPI 00301 SockBuildSockaddr(OUT PSOCKADDR Sockaddr, 00302 OUT PINT SockaddrLength, 00303 IN PTRANSPORT_ADDRESS TdiAddress); 00304 00305 INT 00306 WSPAPI 00307 SockGetTdiHandles(IN PSOCKET_INFORMATION Socket); 00308 00309 VOID 00310 WSPAPI 00311 SockIoCompletion(IN PVOID ApcContext, 00312 IN PIO_STATUS_BLOCK IoStatusBlock, 00313 DWORD Reserved); 00314 00315 VOID 00316 WSPAPI 00317 SockCancelIo(IN SOCKET Handle); 00318 00319 INT 00320 WSPAPI 00321 SockGetInformation(IN PSOCKET_INFORMATION Socket, 00322 IN ULONG AfdInformationClass, 00323 IN PVOID ExtraData OPTIONAL, 00324 IN ULONG ExtraDataSize, 00325 IN OUT PBOOLEAN Boolean OPTIONAL, 00326 IN OUT PULONG Ulong OPTIONAL, 00327 IN OUT PLARGE_INTEGER LargeInteger OPTIONAL); 00328 00329 INT 00330 WSPAPI 00331 SockSetInformation(IN PSOCKET_INFORMATION Socket, 00332 IN ULONG AfdInformationClass, 00333 IN PBOOLEAN Boolean OPTIONAL, 00334 IN PULONG Ulong OPTIONAL, 00335 IN PLARGE_INTEGER LargeInteger OPTIONAL); 00336 00337 INT 00338 WSPAPI 00339 SockSetHandleContext(IN PSOCKET_INFORMATION Socket); 00340 00341 VOID 00342 WSPAPI 00343 SockDereferenceSocket(IN PSOCKET_INFORMATION Socket); 00344 00345 VOID 00346 WSPAPI 00347 SockFreeHelperDll(IN PHELPER_DATA Helper); 00348 00349 PSOCKET_INFORMATION 00350 WSPAPI 00351 SockFindAndReferenceSocket(IN SOCKET Handle, 00352 IN BOOLEAN Import); 00353 00354 INT 00355 WSPAPI 00356 SockEnterApiSlow(OUT PWINSOCK_TEB_DATA *ThreadData); 00357 00358 VOID 00359 WSPAPI 00360 SockSanInitialize(VOID); 00361 00362 VOID 00363 WSPAPI 00364 SockSanGetTcpipCatalogId(VOID); 00365 00366 VOID 00367 WSPAPI 00368 CloseIcfConnection(IN PSOCK_ICF_DATA IcfData); 00369 00370 VOID 00371 WSPAPI 00372 InitializeIcfConnection(IN PSOCK_ICF_DATA IcfData); 00373 00374 VOID 00375 WSPAPI 00376 NewIcfConnection(IN PSOCK_ICF_DATA IcfData); 00377 00378 INT 00379 WSPAPI 00380 NtStatusToSocketError(IN NTSTATUS Status); 00381 00382 INT 00383 WSPAPI 00384 SockSocket(INT AddressFamily, 00385 INT SocketType, 00386 INT Protocol, 00387 LPGUID ProviderId, 00388 GROUP g, 00389 DWORD dwFlags, 00390 DWORD ProviderFlags, 00391 DWORD ServiceFlags, 00392 DWORD CatalogEntryId, 00393 PSOCKET_INFORMATION *NewSocket); 00394 00395 INT 00396 WSPAPI 00397 SockCloseSocket(IN PSOCKET_INFORMATION Socket); 00398 00399 FORCEINLINE 00400 INT 00401 WSPAPI 00402 SockEnterApiFast(OUT PWINSOCK_TEB_DATA *ThreadData) 00403 { 00404 /* Make sure we aren't terminating and get our thread data */ 00405 if (!(SockProcessTerminating) && 00406 (SockWspStartupCount > 0) && 00407 ((*ThreadData = NtCurrentTeb()->WinSockData))) 00408 { 00409 /* Everything is good, return */ 00410 return NO_ERROR; 00411 } 00412 00413 /* Something didn't work out, use the slow path */ 00414 return SockEnterApiSlow(ThreadData); 00415 } 00416 00417 FORCEINLINE 00418 VOID 00419 WSPAPI 00420 SockDereferenceHelperDll(IN PHELPER_DATA Helper) 00421 { 00422 /* Dereference and see if it's the last count */ 00423 if (!InterlockedDecrement(&Helper->RefCount)) 00424 { 00425 /* Destroy the Helper DLL */ 00426 SockFreeHelperDll(Helper); 00427 } 00428 } 00429 00430 #define MSAFD_IS_DGRAM_SOCK(s) \ 00431 (s->SharedData.ServiceFlags1 & XP1_CONNECTIONLESS) 00432 00433 /* Global data that we want to share access with */ 00434 extern HANDLE SockSanCleanUpCompleteEvent; 00435 extern BOOLEAN SockSanEnabled; 00436 extern WSAPROTOCOL_INFOW SockTcpProviderInfo; 00437 00438 typedef VOID 00439 (WSPAPI *PASYNC_COMPLETION_ROUTINE)( 00440 PVOID Context, 00441 PIO_STATUS_BLOCK IoStatusBlock 00442 ); 00443 00444 /* Internal Helper Functions */ 00445 INT 00446 WSPAPI 00447 SockLoadHelperDll( 00448 PWSTR TransportName, 00449 PWINSOCK_MAPPING Mapping, 00450 PHELPER_DATA *HelperDllData 00451 ); 00452 00453 INT 00454 WSPAPI 00455 SockLoadTransportMapping( 00456 PWSTR TransportName, 00457 PWINSOCK_MAPPING *Mapping 00458 ); 00459 00460 INT 00461 WSPAPI 00462 SockLoadTransportList( 00463 PWSTR *TransportList 00464 ); 00465 00466 BOOL 00467 WSPAPI 00468 SockIsTripleInMapping(IN PWINSOCK_MAPPING Mapping, 00469 IN INT AddressFamily, 00470 OUT PBOOLEAN AfMatch, 00471 IN INT SocketType, 00472 OUT PBOOLEAN SockMatch, 00473 IN INT Protocol, 00474 OUT PBOOLEAN ProtoMatch); 00475 00476 INT 00477 WSPAPI 00478 SockAsyncSelectHelper(IN PSOCKET_INFORMATION Socket, 00479 IN HWND hWnd, 00480 IN UINT wMsg, 00481 IN LONG Events); 00482 00483 INT 00484 WSPAPI 00485 SockEventSelectHelper(IN PSOCKET_INFORMATION Socket, 00486 IN WSAEVENT EventObject, 00487 IN LONG Events); 00488 00489 BOOLEAN 00490 WSPAPI 00491 SockCheckAndReferenceAsyncThread(VOID); 00492 00493 BOOLEAN 00494 WSPAPI 00495 SockCheckAndInitAsyncSelectHelper(VOID); 00496 00497 INT 00498 WSPAPI 00499 SockGetTdiName(PINT AddressFamily, 00500 PINT SocketType, 00501 PINT Protocol, 00502 LPGUID ProviderId, 00503 GROUP Group, 00504 DWORD Flags, 00505 PUNICODE_STRING TransportName, 00506 PVOID *HelperDllContext, 00507 PHELPER_DATA *HelperDllData, 00508 PDWORD Events); 00509 00510 INT 00511 WSPAPI 00512 SockAsyncThread( 00513 PVOID ThreadParam 00514 ); 00515 00516 VOID 00517 WSPAPI 00518 SockProcessAsyncSelect(PSOCKET_INFORMATION Socket, 00519 PASYNC_DATA AsyncData); 00520 00521 VOID 00522 WSPAPI 00523 SockHandleAsyncIndication(IN PASYNC_COMPLETION_ROUTINE Callback, 00524 IN PVOID Context, 00525 IN PIO_STATUS_BLOCK IoStatusBlock); 00526 00527 INT 00528 WSPAPI 00529 SockReenableAsyncSelectEvent(IN PSOCKET_INFORMATION Socket, 00530 IN ULONG Event); 00531 00532 VOID 00533 WSPAPI 00534 SockProcessQueuedAsyncSelect(PVOID Context, 00535 PIO_STATUS_BLOCK IoStatusBlock); 00536 00537 VOID 00538 WSPAPI 00539 SockAsyncSelectCompletion( 00540 PVOID Context, 00541 PIO_STATUS_BLOCK IoStatusBlock 00542 ); 00543 00544 /* Public functions, but not exported! */ 00545 SOCKET 00546 WSPAPI 00547 WSPAccept( 00548 IN SOCKET s, 00549 OUT LPSOCKADDR addr, 00550 IN OUT LPINT addrlen, 00551 IN LPCONDITIONPROC lpfnCondition, 00552 IN DWORD dwCallbackData, 00553 OUT LPINT lpErrno); 00554 00555 INT 00556 WSPAPI 00557 WSPAddressToString( 00558 IN LPSOCKADDR lpsaAddress, 00559 IN DWORD dwAddressLength, 00560 IN LPWSAPROTOCOL_INFOW lpProtocolInfo, 00561 OUT LPWSTR lpszAddressString, 00562 IN OUT LPDWORD lpdwAddressStringLength, 00563 OUT LPINT lpErrno); 00564 00565 INT 00566 WSPAPI 00567 WSPAsyncSelect( 00568 IN SOCKET s, 00569 IN HWND hWnd, 00570 IN UINT wMsg, 00571 IN LONG lEvent, 00572 OUT LPINT lpErrno); 00573 00574 INT 00575 WSPAPI WSPBind( 00576 IN SOCKET s, 00577 IN CONST SOCKADDR *name, 00578 IN INT namelen, 00579 OUT LPINT lpErrno); 00580 00581 INT 00582 WSPAPI 00583 WSPCancelBlockingCall( 00584 OUT LPINT lpErrno); 00585 00586 INT 00587 WSPAPI 00588 WSPCleanup( 00589 OUT LPINT lpErrno); 00590 00591 INT 00592 WSPAPI 00593 WSPCloseSocket( 00594 IN SOCKET s, 00595 OUT LPINT lpErrno); 00596 00597 INT 00598 WSPAPI 00599 WSPConnect( 00600 IN SOCKET s, 00601 IN CONST SOCKADDR *name, 00602 IN INT namelen, 00603 IN LPWSABUF lpCallerData, 00604 OUT LPWSABUF lpCalleeData, 00605 IN LPQOS lpSQOS, 00606 IN LPQOS lpGQOS, 00607 OUT LPINT lpErrno); 00608 00609 INT 00610 WSPAPI 00611 WSPDuplicateSocket( 00612 IN SOCKET s, 00613 IN DWORD dwProcessId, 00614 OUT LPWSAPROTOCOL_INFOW lpProtocolInfo, 00615 OUT LPINT lpErrno); 00616 00617 INT 00618 WSPAPI 00619 WSPEnumNetworkEvents( 00620 IN SOCKET s, 00621 IN WSAEVENT hEventObject, 00622 OUT LPWSANETWORKEVENTS lpNetworkEvents, 00623 OUT LPINT lpErrno); 00624 00625 INT 00626 WSPAPI 00627 WSPEventSelect( 00628 IN SOCKET s, 00629 IN WSAEVENT hEventObject, 00630 IN LONG lNetworkEvents, 00631 OUT LPINT lpErrno); 00632 00633 BOOL 00634 WSPAPI 00635 WSPGetOverlappedResult( 00636 IN SOCKET s, 00637 IN LPWSAOVERLAPPED lpOverlapped, 00638 OUT LPDWORD lpcbTransfer, 00639 IN BOOL fWait, 00640 OUT LPDWORD lpdwFlags, 00641 OUT LPINT lpErrno); 00642 00643 INT 00644 WSPAPI 00645 WSPGetPeerName( 00646 IN SOCKET s, 00647 OUT LPSOCKADDR name, 00648 IN OUT LPINT namelen, 00649 OUT LPINT lpErrno); 00650 00651 BOOL 00652 WSPAPI 00653 WSPGetQOSByName( 00654 IN SOCKET s, 00655 IN OUT LPWSABUF lpQOSName, 00656 OUT LPQOS lpQOS, 00657 OUT LPINT lpErrno); 00658 00659 INT 00660 WSPAPI 00661 WSPGetSockName( 00662 IN SOCKET s, 00663 OUT LPSOCKADDR name, 00664 IN OUT LPINT namelen, 00665 OUT LPINT lpErrno); 00666 00667 INT 00668 WSPAPI 00669 WSPGetSockOpt( 00670 IN SOCKET s, 00671 IN INT level, 00672 IN INT optname, 00673 OUT CHAR FAR* optval, 00674 IN OUT LPINT optlen, 00675 OUT LPINT lpErrno); 00676 00677 INT 00678 WSPAPI 00679 WSPIoctl( 00680 IN SOCKET s, 00681 IN DWORD dwIoControlCode, 00682 IN LPVOID lpvInBuffer, 00683 IN DWORD cbInBuffer, 00684 OUT LPVOID lpvOutBuffer, 00685 IN DWORD cbOutBuffer, 00686 OUT LPDWORD lpcbBytesReturned, 00687 IN LPWSAOVERLAPPED lpOverlapped, 00688 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, 00689 IN LPWSATHREADID lpThreadId, 00690 OUT LPINT lpErrno); 00691 00692 SOCKET 00693 WSPAPI 00694 WSPJoinLeaf( 00695 IN SOCKET s, 00696 IN CONST SOCKADDR *name, 00697 IN INT namelen, 00698 IN LPWSABUF lpCallerData, 00699 OUT LPWSABUF lpCalleeData, 00700 IN LPQOS lpSQOS, 00701 IN LPQOS lpGQOS, 00702 IN DWORD dwFlags, 00703 OUT LPINT lpErrno); 00704 00705 INT 00706 WSPAPI 00707 WSPListen( 00708 IN SOCKET s, 00709 IN INT backlog, 00710 OUT LPINT lpErrno); 00711 00712 INT 00713 WSPAPI 00714 WSPRecv( 00715 IN SOCKET s, 00716 IN OUT LPWSABUF lpBuffers, 00717 IN DWORD dwBufferCount, 00718 OUT LPDWORD lpNumberOfBytesRecvd, 00719 IN OUT LPDWORD lpFlags, 00720 IN LPWSAOVERLAPPED lpOverlapped, 00721 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, 00722 IN LPWSATHREADID lpThreadId, 00723 OUT LPINT lpErrno); 00724 00725 INT 00726 WSPAPI 00727 WSPRecvDisconnect( 00728 IN SOCKET s, 00729 OUT LPWSABUF lpInboundDisconnectData, 00730 OUT LPINT lpErrno); 00731 00732 INT 00733 WSPAPI 00734 WSPRecvFrom( 00735 IN SOCKET s, 00736 IN OUT LPWSABUF lpBuffers, 00737 IN DWORD dwBufferCount, 00738 OUT LPDWORD lpNumberOfBytesRecvd, 00739 IN OUT LPDWORD lpFlags, 00740 OUT LPSOCKADDR lpFrom, 00741 IN OUT LPINT lpFromlen, 00742 IN LPWSAOVERLAPPED lpOverlapped, 00743 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, 00744 IN LPWSATHREADID lpThreadId, 00745 OUT LPINT lpErrno); 00746 00747 INT 00748 WSPAPI 00749 WSPSelect( 00750 IN INT nfds, 00751 IN OUT LPFD_SET readfds, 00752 IN OUT LPFD_SET writefds, 00753 IN OUT LPFD_SET exceptfds, 00754 IN CONST LPTIMEVAL timeout, 00755 OUT LPINT lpErrno); 00756 00757 INT 00758 WSPAPI 00759 WSPSend( 00760 IN SOCKET s, 00761 IN LPWSABUF lpBuffers, 00762 IN DWORD dwBufferCount, 00763 OUT LPDWORD lpNumberOfBytesSent, 00764 IN DWORD dwFlags, 00765 IN LPWSAOVERLAPPED lpOverlapped, 00766 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, 00767 IN LPWSATHREADID lpThreadId, 00768 OUT LPINT lpErrno); 00769 00770 INT 00771 WSPAPI 00772 WSPSendDisconnect( 00773 IN SOCKET s, 00774 IN LPWSABUF lpOutboundDisconnectData, 00775 OUT LPINT lpErrno); 00776 00777 INT 00778 WSPAPI 00779 WSPSendTo( 00780 IN SOCKET s, 00781 IN LPWSABUF lpBuffers, 00782 IN DWORD dwBufferCount, 00783 OUT LPDWORD lpNumberOfBytesSent, 00784 IN DWORD dwFlags, 00785 IN CONST SOCKADDR *lpTo, 00786 IN INT iTolen, 00787 IN LPWSAOVERLAPPED lpOverlapped, 00788 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, 00789 IN LPWSATHREADID lpThreadId, 00790 OUT LPINT lpErrno); 00791 00792 INT 00793 WSPAPI 00794 WSPSetSockOpt( 00795 IN SOCKET s, 00796 IN INT level, 00797 IN INT optname, 00798 IN CONST CHAR FAR* optval, 00799 IN INT optlen, 00800 OUT LPINT lpErrno); 00801 00802 INT 00803 WSPAPI 00804 WSPShutdown( 00805 IN SOCKET s, 00806 IN INT how, 00807 OUT LPINT lpErrno); 00808 00809 SOCKET 00810 WSPAPI 00811 WSPSocket( 00812 IN INT af, 00813 IN INT type, 00814 IN INT protocol, 00815 IN LPWSAPROTOCOL_INFOW lpProtocolInfo, 00816 IN GROUP g, 00817 IN DWORD dwFlags, 00818 OUT LPINT lpErrno); 00819 00820 INT 00821 WSPAPI 00822 WSPStringToAddress( 00823 IN LPWSTR AddressString, 00824 IN INT AddressFamily, 00825 IN LPWSAPROTOCOL_INFOW lpProtocolInfo, 00826 OUT LPSOCKADDR lpAddress, 00827 IN OUT LPINT lpAddressLength, 00828 OUT LPINT lpErrno); Generated on Sun May 27 2012 04:33:21 for ReactOS by
1.7.6.1
|