This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/MinGW/include/ws2spi.h

306 lines
10 KiB
C

/*
* ws2spi.h
*
* WinSock v2 Service Provider Interface.
*
* $Id: ws2spi.h,v 6bac0d8e9be7 2017/11/24 17:04:18 keith $
*
* Written by Casper S. Hornstrup <chorns@users.sourceforge.net>
* Copyright (C) 2002-2004, 2006, 2017, MinGW.org Project
*
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
#ifndef _WS2SPI_H
#pragma GCC system_header
#define _WS2SPI_H
#include <winsock2.h>
_BEGIN_C_DECLS
#define WSPAPI WSAAPI
#define WSPDESCRIPTION_LEN 255
#ifndef RC_INVOKED
typedef
struct WSPData
{ WORD wVersion;
WORD wHighVersion;
WCHAR szDescription[WSPDESCRIPTION_LEN+1];
} WSPDATA, FAR *LPWSPDATA;
typedef
struct _WSATHREADID
{ HANDLE ThreadHandle;
DWORD Reserved;
} WSATHREADID, FAR *LPWSATHREADID;
typedef BOOL (CALLBACK FAR *LPBLOCKINGCALLBACK) (DWORD);
typedef VOID (CALLBACK FAR *LPWSAUSERAPC) (DWORD);
/* Prototypes for functions which may be invoked
* via the Service Provider Procedure Table.
*/
typedef SOCKET (WSPAPI *LPWSPACCEPT)
( SOCKET, LPSOCKADDR, LPINT, LPCONDITIONPROC, DWORD, LPINT
);
typedef INT (WSPAPI *LPWSPADDRESSTOSTRING)
( LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD, LPINT
);
typedef INT (WSPAPI *LPWSPASYNCSELECT) (SOCKET, HWND, UINT, LONG, LPINT);
typedef INT (WSPAPI *LPWSPBIND) (SOCKET, const struct sockaddr *, INT, LPINT);
typedef INT (WSPAPI *LPWSPCANCELBLOCKINGCALL) (LPINT);
typedef INT (WSPAPI *LPWSPCLEANUP) (LPINT);
typedef INT (WSPAPI *LPWSPCLOSESOCKET) (SOCKET, LPINT);
typedef INT (WSPAPI *LPWSPCONNECT)
( SOCKET, const struct sockaddr *, INT, LPWSABUF, LPWSABUF,
LPQOS, LPQOS, LPINT
);
typedef INT (WSPAPI *LPWSPDUPLICATESOCKET)
( SOCKET, DWORD, LPWSAPROTOCOL_INFOW, LPINT
);
typedef INT (WSPAPI *LPWSPENUMNETWORKEVENTS)
( SOCKET, WSAEVENT, LPWSANETWORKEVENTS, LPINT
);
typedef INT (WSPAPI *LPWSPEVENTSELECT) (SOCKET, WSAEVENT, LONG, LPINT);
typedef BOOL (WSPAPI *LPWSPGETOVERLAPPEDRESULT)
( SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD, LPINT
);
typedef INT (WSPAPI *LPWSPGETPEERNAME) (SOCKET, LPSOCKADDR, LPINT, LPINT);
typedef BOOL (WSPAPI *LPWSPGETQOSBYNAME) (SOCKET, LPWSABUF, LPQOS, LPINT);
typedef INT (WSPAPI *LPWSPGETSOCKNAME) (SOCKET, LPSOCKADDR, LPINT, LPINT);
typedef INT (WSPAPI *LPWSPGETSOCKOPT)
( SOCKET, INT, INT, CHAR FAR *, LPINT, LPINT
);
typedef INT (WSPAPI *LPWSPIOCTL)
( SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED,
LPWSAOVERLAPPED_COMPLETION_ROUTINE, LPWSATHREADID, LPINT
);
typedef SOCKET (WSPAPI *LPWSPJOINLEAF)
( SOCKET, const struct sockaddr*, INT, LPWSABUF, LPWSABUF,
LPQOS, LPQOS, DWORD, LPINT
);
typedef INT (WSPAPI *LPWSPLISTEN) (SOCKET, INT, LPINT);
typedef INT (WSPAPI *LPWSPRECV)
( SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED,
LPWSAOVERLAPPED_COMPLETION_ROUTINE, LPWSATHREADID, LPINT
);
typedef INT (WSPAPI *LPWSPRECVDISCONNECT) (SOCKET, LPWSABUF, LPINT);
typedef INT (WSPAPI *LPWSPRECVFROM)
( SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPSOCKADDR, LPINT,
LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE, LPWSATHREADID,
LPINT
);
typedef INT (WSPAPI *LPWSPSELECT)
( INT, fd_set *, fd_set *, fd_set *, CONST TIMEVAL *, LPINT
);
typedef INT (WSPAPI *LPWSPSEND)
( SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED,
LPWSAOVERLAPPED_COMPLETION_ROUTINE, LPWSATHREADID, LPINT
);
typedef INT (WSPAPI *LPWSPSENDDISCONNECT) (SOCKET, LPWSABUF, LPINT);
typedef INT (WSPAPI *LPWSPSENDTO)
( SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *,
INT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE,
LPWSATHREADID, LPINT
);
typedef INT (WSPAPI *LPWSPSETSOCKOPT)
( SOCKET, INT, INT, CONST CHAR FAR *, INT, LPINT
);
typedef INT (WSPAPI *LPWSPSHUTDOWN) (SOCKET, INT, LPINT);
typedef SOCKET (WSPAPI *LPWSPSOCKET)
( INT, INT, INT, LPWSAPROTOCOL_INFOW, GROUP, DWORD, LPINT
);
typedef INT (WSPAPI *LPWSPSTRINGTOADDRESS)
( LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT, LPINT
);
typedef
struct _WSPPROC_TABLE
{ /* Service Provider Procedure Table
*/
LPWSPACCEPT lpWSPAccept;
LPWSPADDRESSTOSTRING lpWSPAddressToString;
LPWSPASYNCSELECT lpWSPAsyncSelect;
LPWSPBIND lpWSPBind;
LPWSPCANCELBLOCKINGCALL lpWSPCancelBlockingCall;
LPWSPCLEANUP lpWSPCleanup;
LPWSPCLOSESOCKET lpWSPCloseSocket;
LPWSPCONNECT lpWSPConnect;
LPWSPDUPLICATESOCKET lpWSPDuplicateSocket;
LPWSPENUMNETWORKEVENTS lpWSPEnumNetworkEvents;
LPWSPEVENTSELECT lpWSPEventSelect;
LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult;
LPWSPGETPEERNAME lpWSPGetPeerName;
LPWSPGETSOCKNAME lpWSPGetSockName;
LPWSPGETSOCKOPT lpWSPGetSockOpt;
LPWSPGETQOSBYNAME lpWSPGetQOSByName;
LPWSPIOCTL lpWSPIoctl;
LPWSPJOINLEAF lpWSPJoinLeaf;
LPWSPLISTEN lpWSPListen;
LPWSPRECV lpWSPRecv;
LPWSPRECVDISCONNECT lpWSPRecvDisconnect;
LPWSPRECVFROM lpWSPRecvFrom;
LPWSPSELECT lpWSPSelect;
LPWSPSEND lpWSPSend;
LPWSPSENDDISCONNECT lpWSPSendDisconnect;
LPWSPSENDTO lpWSPSendTo;
LPWSPSETSOCKOPT lpWSPSetSockOpt;
LPWSPSHUTDOWN lpWSPShutdown;
LPWSPSOCKET lpWSPSocket;
LPWSPSTRINGTOADDRESS lpWSPStringToAddress;
} WSPPROC_TABLE, FAR *LPWSPPROC_TABLE;
/* Prototypes for functions which may be invoked via
* the Service Provider Upcall Procedure Table.
*/
typedef BOOL (WSPAPI *LPWPUCLOSEEVENT) (WSAEVENT, LPINT);
typedef INT (WSPAPI *LPWPUCLOSESOCKETHANDLE) (SOCKET, LPINT);
typedef INT (WSPAPI *LPWPUCLOSETHREAD) (LPWSATHREADID, LPINT);
typedef WSAEVENT (WSPAPI *LPWPUCREATEEVENT) (LPINT);
typedef SOCKET (WSPAPI *LPWPUCREATESOCKETHANDLE) (DWORD, DWORD, LPINT);
typedef SOCKET (WSPAPI *LPWPUFDISSET) (SOCKET, fd_set *);
typedef INT (WSPAPI *LPWPUGETPROVIDERPATH) (LPGUID, LPWSTR, LPINT, LPINT);
typedef SOCKET (WSPAPI *LPWPUMODIFYIFSHANDLE) (DWORD, SOCKET, LPINT);
typedef INT (WSPAPI *LPWPUOPENCURRENTTHREAD) (LPWSATHREADID, LPINT);
typedef BOOL (WSPAPI *LPWPUPOSTMESSAGE) (HWND, UINT, WPARAM, LPARAM);
typedef INT (WSPAPI *LPWPUQUERYBLOCKINGCALLBACK)
( DWORD, LPBLOCKINGCALLBACK FAR *, LPDWORD, LPINT
);
typedef INT (WSPAPI *LPWPUQUERYSOCKETHANDLECONTEXT) (SOCKET, LPDWORD, LPINT);
typedef INT (WSPAPI *LPWPUQUEUEAPC)
( LPWSATHREADID, LPWSAUSERAPC, DWORD, LPINT
);
typedef BOOL (WSPAPI *LPWPURESETEVENT) (WSAEVENT, LPINT);
typedef BOOL (WSPAPI *LPWPUSETEVENT) (WSAEVENT, LPINT);
/* Functions matching the following prototype are available
* only directly from the DLL
*/
typedef INT (WSPAPI *LPWPUCOMPLETEOVERLAPPEDREQUEST)
( SOCKET, LPWSAOVERLAPPED, DWORD, DWORD, LPINT
);
typedef
struct _WSPUPCALLTABLE
{ /* Service Provider Upcall Table
*/
LPWPUCLOSEEVENT lpWPUCloseEvent;
LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
LPWPUCREATEEVENT lpWPUCreateEvent;
LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
LPWPUFDISSET lpWPUFDIsSet;
LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
LPWPUPOSTMESSAGE lpWPUPostMessage;
LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
LPWPUQUEUEAPC lpWPUQueueApc;
LPWPURESETEVENT lpWPUResetEvent;
LPWPUSETEVENT lpWPUSetEvent;
LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
LPWPUCLOSETHREAD lpWPUCloseThread;
} WSPUPCALLTABLE, FAR *LPWSPUPCALLTABLE;
typedef INT (WSPAPI *LPWSPSTARTUP)
( WORD, LPWSPDATA, LPWSAPROTOCOL_INFOW, WSPUPCALLTABLE, LPWSPPROC_TABLE
);
/* Prototypes for functions which may be invoked via
* the Service Provider Namespace Procedure Table.
*/
typedef INT (WSPAPI *LPNSPCLEANUP) (LPGUID);
typedef INT (WSPAPI *LPNSPGETSERVICECLASSINFO)
( LPGUID, LPDWORD, LPWSASERVICECLASSINFOW
);
typedef INT (WSPAPI *LPNSPINSTALLSERVICECLASS)
( LPGUID, LPWSASERVICECLASSINFOW
);
typedef INT (WSPAPI *LPNSPLOOKUPSERVICEBEGIN)
( LPGUID, LPWSAQUERYSETW, LPWSASERVICECLASSINFOW, DWORD, LPHANDLE
);
typedef INT (WSPAPI *LPNSPLOOKUPSERVICEEND) (HANDLE);
typedef INT (WSPAPI *LPNSPLOOKUPSERVICENEXT)
( HANDLE, DWORD, LPDWORD, LPWSAQUERYSET
);
typedef INT (WSPAPI *LPNSPREMOVESERVICECLASS) (LPGUID, LPGUID);
typedef INT (WSPAPI *LPNSPSETSERVICE)
( LPGUID, LPWSASERVICECLASSINFOW, LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD
);
typedef
struct _NSP_ROUTINE
{ /* Service Provider Namespace Procedure Table
*/
DWORD cbSize;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
LPNSPCLEANUP NSPCleanup;
LPNSPLOOKUPSERVICEBEGIN NSPLookupServiceBegin;
LPNSPLOOKUPSERVICENEXT NSPLookupServiceNext;
LPNSPLOOKUPSERVICEEND NSPLookupServiceEnd;
LPNSPSETSERVICE NSPSetService;
LPNSPINSTALLSERVICECLASS NSPInstallServiceClass;
LPNSPREMOVESERVICECLASS NSPRemoveServiceClass;
LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo;
} NSP_ROUTINE, *PNSP_ROUTINE, *LPNSP_ROUTINE;
INT WSPAPI NSPStartup (LPGUID, LPNSP_ROUTINE);
/* WinSock v2 DLL function prototypes
*/
INT WSPAPI WPUCompleteOverlappedRequest
( SOCKET, LPWSAOVERLAPPED, DWORD, DWORD, LPINT
);
INT WSPAPI WSPStartup
( WORD, LPWSPDATA, LPWSAPROTOCOL_INFOW, WSPUPCALLTABLE, LPWSPPROC_TABLE
);
INT WSPAPI WSCDeinstallProvider (LPGUID, LPINT);
INT WSPAPI WSCEnumProtocols (LPINT, LPWSAPROTOCOL_INFOW, LPDWORD, LPINT);
INT WSPAPI WSCGetProviderPath (LPGUID, LPWSTR, LPINT, LPINT);
INT WSPAPI WSCInstallProvider
( CONST LPGUID, CONST LPWSTR, CONST LPWSAPROTOCOL_INFOW, DWORD, LPINT
);
INT WSPAPI WSCEnableNSProvider (LPGUID, BOOL);
INT WSPAPI WSCInstallNameSpace (LPWSTR, LPWSTR, DWORD, DWORD, LPGUID);
INT WSPAPI WSCUnInstallNameSpace (LPGUID);
INT WSPAPI WSCWriteProviderOrder (LPDWORD, DWORD);
#endif /* ! RC_INVOKED */
_END_C_DECLS
#endif /* !_WS2SPI_H: $RCSfile: ws2spi.h,v $: end of file */