ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

msafdlib.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.