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

ws2spi.h
Go to the documentation of this file.
00001 /*
00002  * ws2spi.h
00003  *
00004  * Winsock 2 Service Provider interface.
00005  *
00006  *
00007  * THIS SOFTWARE IS NOT COPYRIGHTED
00008  *
00009  * This source code is offered for use in the public domain. You may
00010  * use, modify or distribute it freely.
00011  *
00012  * This code is distributed in the hope that it will be useful but
00013  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
00014  * DISCLAIMED. This includes but is not limited to warranties of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00016  *
00017  */
00018 #pragma once
00019 
00020 #define _WS2SPI_H
00021 
00022 #ifndef _WINSOCK2API_
00023 #include <winsock2.h>
00024 #endif
00025 
00026 #ifdef __cplusplus
00027 extern "C" {
00028 #endif
00029 
00030 #if !defined(_WIN64)
00031 #include <pshpack4.h>
00032 #endif
00033 
00034 #define WSPDESCRIPTION_LEN 255
00035 
00036 #define WSS_OPERATION_IN_PROGRESS 0x00000103L
00037 
00038 #define WSPAPI WSAAPI
00039 
00040 typedef struct _WSATHREADID {
00041   HANDLE ThreadHandle;
00042   DWORD_PTR Reserved;
00043 } WSATHREADID, FAR *LPWSATHREADID;
00044 
00045 typedef struct WSPData {
00046   WORD wVersion;
00047   WORD wHighVersion;
00048   WCHAR szDescription[WSPDESCRIPTION_LEN+1];
00049 } WSPDATA, FAR *LPWSPDATA;
00050 
00051 typedef BOOL
00052 (CALLBACK FAR *LPBLOCKINGCALLBACK)(
00053   DWORD_PTR dwContext);
00054 
00055 typedef SOCKET
00056 (WSPAPI *LPWSPACCEPT)(
00057   IN SOCKET s,
00058   OUT struct sockaddr FAR *addr OPTIONAL,
00059   IN OUT LPINT addrlen OPTIONAL,
00060   IN LPCONDITIONPROC lpfnCondition OPTIONAL,
00061   IN DWORD_PTR dwCallbackData OPTIONAL,
00062   OUT LPINT lpErrno);
00063 
00064 typedef VOID
00065 (CALLBACK FAR *LPWSAUSERAPC)(
00066   DWORD_PTR dwContext);
00067 
00068 typedef INT
00069 (WSPAPI *LPWSPADDRESSTOSTRING)(
00070   IN LPSOCKADDR lpsaAddress,
00071   IN DWORD dwAddressLength,
00072   IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
00073   OUT LPWSTR lpszAddressString,
00074   IN OUT LPDWORD lpdwAddressStringLength,
00075   OUT LPINT lpErrno);
00076 
00077 typedef int
00078 (WSPAPI *LPWSPASYNCSELECT)(
00079   IN SOCKET s,
00080   IN HWND hWnd,
00081   IN unsigned int wMsg,
00082   IN long lEvent,
00083   OUT LPINT lpErrno);
00084 
00085 typedef int
00086 (WSPAPI *LPWSPBIND)(
00087   IN SOCKET s,
00088   IN const struct sockaddr FAR *name,
00089   IN int namelen,
00090   OUT LPINT lpErrno);
00091 
00092 typedef int
00093 (WSPAPI *LPWSPCANCELBLOCKINGCALL)(
00094   OUT LPINT lpErrno);
00095 
00096 typedef int
00097 (WSPAPI *LPWSPCLEANUP)(
00098   OUT LPINT lpErrno);
00099 
00100 typedef int
00101 (WSPAPI *LPWSPCLOSESOCKET)(
00102   IN SOCKET s,
00103   OUT LPINT lpErrno);
00104 
00105 typedef int
00106 (WSPAPI *LPWSPCONNECT)(
00107   IN SOCKET s,
00108   IN const struct sockaddr FAR *name,
00109   IN int namelen,
00110   IN LPWSABUF lpCallerData OPTIONAL,
00111   OUT LPWSABUF lpCalleeData OPTIONAL,
00112   IN LPQOS lpSQOS OPTIONAL,
00113   IN LPQOS lpGQOS OPTIONAL,
00114   OUT LPINT lpErrno);
00115 
00116 typedef int
00117 (WSPAPI *LPWSPDUPLICATESOCKET)(
00118   IN SOCKET s,
00119   IN DWORD dwProcessId,
00120   OUT LPWSAPROTOCOL_INFOW lpProtocolInfo,
00121   OUT LPINT lpErrno);
00122 
00123 typedef int
00124 (WSPAPI *LPWSPENUMNETWORKEVENTS)(
00125   IN SOCKET s,
00126   IN WSAEVENT hEventObject,
00127   OUT LPWSANETWORKEVENTS lpNetworkEvents,
00128   OUT LPINT lpErrno);
00129 
00130 typedef int
00131 (WSPAPI *LPWSPEVENTSELECT)(
00132   IN SOCKET s,
00133   IN WSAEVENT hEventObject,
00134   IN long lNetworkEvents,
00135   OUT LPINT lpErrno);
00136 
00137 typedef BOOL
00138 (WSPAPI *LPWSPGETOVERLAPPEDRESULT)(
00139   IN SOCKET s,
00140   IN LPWSAOVERLAPPED lpOverlapped,
00141   OUT LPDWORD lpcbTransfer,
00142   IN BOOL fWait,
00143   OUT LPDWORD lpdwFlags,
00144   OUT LPINT lpErrno);
00145 
00146 typedef int
00147 (WSPAPI *LPWSPGETPEERNAME)(
00148   IN SOCKET s,
00149   OUT struct sockaddr FAR *name,
00150   IN OUT LPINT namelen,
00151   OUT LPINT lpErrno);
00152 
00153 typedef int
00154 (WSPAPI *LPWSPGETSOCKNAME)(
00155   IN SOCKET s,
00156   OUT struct sockaddr FAR *name,
00157   IN OUT LPINT namelen,
00158   OUT LPINT lpErrno);
00159 
00160 typedef int
00161 (WSPAPI *LPWSPGETSOCKOPT)(
00162   IN SOCKET s,
00163   IN int level,
00164   IN int optname,
00165   OUT char FAR *optval,
00166   IN OUT LPINT optlen,
00167   OUT LPINT lpErrno);
00168 
00169 typedef BOOL
00170 (WSPAPI *LPWSPGETQOSBYNAME)(
00171   IN SOCKET s,
00172   IN LPWSABUF lpQOSName,
00173   OUT LPQOS lpQOS,
00174   OUT LPINT lpErrno);
00175 
00176 typedef int
00177 (WSPAPI *LPWSPIOCTL)(
00178   IN SOCKET s,
00179   IN DWORD dwIoControlCode,
00180   IN LPVOID lpvInBuffer OPTIONAL,
00181   IN DWORD cbInBuffer,
00182   OUT LPVOID lpvOutBuffer OPTIONAL,
00183   IN DWORD cbOutBuffer,
00184   OUT LPDWORD lpcbBytesReturned,
00185   IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
00186   IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
00187   IN LPWSATHREADID lpThreadId OPTIONAL,
00188   OUT LPINT lpErrno);
00189 
00190 typedef SOCKET
00191 (WSPAPI *LPWSPJOINLEAF)(
00192   IN SOCKET s,
00193   IN const struct sockaddr FAR *name,
00194   IN int namelen,
00195   IN LPWSABUF lpCallerData OPTIONAL,
00196   OUT LPWSABUF lpCalleeData OPTIONAL,
00197   IN LPQOS lpSQOS OPTIONAL,
00198   IN LPQOS lpGQOS OPTIONAL,
00199   IN DWORD dwFlags,
00200   OUT LPINT lpErrno);
00201 
00202 typedef int
00203 (WSPAPI *LPWSPLISTEN)(
00204   IN SOCKET s,
00205   IN int backlog,
00206   OUT LPINT lpErrno);
00207 
00208 typedef int
00209 (WSPAPI *LPWSPRECV)(
00210   IN SOCKET s,
00211   IN LPWSABUF lpBuffers,
00212   IN DWORD dwBufferCount,
00213   OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
00214   IN OUT LPDWORD lpFlags,
00215   IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
00216   IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
00217   IN LPWSATHREADID lpThreadId OPTIONAL,
00218   IN LPINT lpErrno);
00219 
00220 typedef int
00221 (WSPAPI *LPWSPRECVDISCONNECT)(
00222   IN SOCKET s,
00223   IN LPWSABUF lpInboundDisconnectData OPTIONAL,
00224   OUT LPINT lpErrno);
00225 
00226 typedef int
00227 (WSPAPI *LPWSPRECVFROM)(
00228   IN SOCKET s,
00229   IN LPWSABUF lpBuffers,
00230   IN DWORD dwBufferCount,
00231   OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
00232   IN OUT LPDWORD lpFlags,
00233   OUT struct sockaddr FAR *lpFrom OPTIONAL,
00234   IN OUT LPINT lpFromlen OPTIONAL,
00235   IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
00236   IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
00237   IN LPWSATHREADID lpThreadId OPTIONAL,
00238   OUT LPINT lpErrno);
00239 
00240 typedef int
00241 (WSPAPI *LPWSPSELECT)(
00242   IN int nfds,
00243   IN OUT fd_set FAR *readfds OPTIONAL,
00244   IN OUT fd_set FAR *writefds OPTIONAL,
00245   IN OUT fd_set FAR *exceptfds OPTIONAL,
00246   IN const struct timeval FAR *timeout OPTIONAL,
00247   OUT LPINT lpErrno);
00248 
00249 typedef int
00250 (WSPAPI *LPWSPSEND)(
00251   IN SOCKET s,
00252   IN LPWSABUF lpBuffers,
00253   IN DWORD dwBufferCount,
00254   OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
00255   IN DWORD dwFlags,
00256   IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
00257   IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
00258   IN LPWSATHREADID lpThreadId OPTIONAL,
00259   OUT LPINT lpErrno);
00260 
00261 typedef int
00262 (WSPAPI *LPWSPSENDDISCONNECT)(
00263   IN SOCKET s,
00264   IN LPWSABUF lpOutboundDisconnectData OPTIONAL,
00265   OUT LPINT lpErrno);
00266 
00267 typedef int
00268 (WSPAPI *LPWSPSENDTO)(
00269   IN SOCKET s,
00270   IN LPWSABUF lpBuffers,
00271   IN DWORD dwBufferCount,
00272   OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
00273   IN DWORD dwFlags,
00274   IN const struct sockaddr FAR *lpTo OPTIONAL,
00275   IN int iTolen,
00276   IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
00277   IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
00278   IN LPWSATHREADID lpThreadId OPTIONAL,
00279   OUT LPINT lpErrno);
00280 
00281 typedef int
00282 (WSPAPI *LPWSPSETSOCKOPT)(
00283   IN SOCKET s,
00284   IN int level,
00285   IN int optname,
00286   IN const char FAR *optval OPTIONAL,
00287   IN int optlen,
00288   OUT LPINT lpErrno);
00289 
00290 typedef int
00291 (WSPAPI *LPWSPSHUTDOWN)(
00292   IN SOCKET s,
00293   IN int how,
00294   OUT LPINT lpErrno);
00295 
00296 typedef SOCKET
00297 (WSPAPI *LPWSPSOCKET)(
00298   IN int af,
00299   IN int type,
00300   IN int protocol,
00301   IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
00302   IN GROUP g,
00303   IN DWORD dwFlags,
00304   OUT LPINT lpErrno);
00305 
00306 typedef INT
00307 (WSPAPI *LPWSPSTRINGTOADDRESS)(
00308   IN LPWSTR AddressString,
00309   IN INT AddressFamily,
00310   IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
00311   OUT LPSOCKADDR lpAddress,
00312   IN OUT LPINT lpAddressLength,
00313   OUT LPINT lpErrno);
00314 
00315 typedef BOOL
00316 (WSPAPI *LPWPUCLOSEEVENT)(
00317   IN WSAEVENT hEvent,
00318   OUT LPINT lpErrno);
00319 
00320 typedef int
00321 (WSPAPI *LPWPUCLOSESOCKETHANDLE)(
00322   IN SOCKET s,
00323   OUT LPINT lpErrno);
00324 
00325 typedef WSAEVENT
00326 (WSPAPI *LPWPUCREATEEVENT)(
00327   OUT LPINT lpErrno);
00328 
00329 typedef SOCKET
00330 (WSPAPI *LPWPUCREATESOCKETHANDLE)(
00331   IN DWORD dwCatalogEntryId,
00332   IN DWORD_PTR dwContext,
00333   OUT LPINT lpErrno);
00334 
00335 typedef int
00336 (WSPAPI *LPWPUFDISSET)(
00337   IN SOCKET s,
00338   IN fd_set FAR *fdset);
00339 
00340 typedef int
00341 (WSPAPI *LPWPUGETPROVIDERPATH)(
00342   IN LPGUID lpProviderId,
00343   OUT WCHAR FAR *lpszProviderDllPath,
00344   IN OUT LPINT lpProviderDllPathLen,
00345   OUT LPINT lpErrno);
00346 
00347 typedef SOCKET
00348 (WSPAPI *LPWPUMODIFYIFSHANDLE)(
00349   IN DWORD dwCatalogEntryId,
00350   IN SOCKET ProposedHandle,
00351   OUT LPINT lpErrno);
00352 
00353 typedef BOOL
00354 (WSPAPI *LPWPUPOSTMESSAGE)(
00355   IN HWND hWnd,
00356   IN UINT Msg,
00357   IN WPARAM wParam,
00358   IN LPARAM lParam);
00359 
00360 typedef int
00361 (WSPAPI *LPWPUQUERYBLOCKINGCALLBACK)(
00362   IN DWORD dwCatalogEntryId,
00363   OUT LPBLOCKINGCALLBACK FAR *lplpfnCallback,
00364   OUT PDWORD_PTR lpdwContext,
00365   OUT LPINT lpErrno);
00366 
00367 typedef int
00368 (WSPAPI *LPWPUQUERYSOCKETHANDLECONTEXT)(
00369   IN SOCKET s,
00370   OUT PDWORD_PTR lpContext,
00371   OUT LPINT lpErrno);
00372 
00373 typedef int
00374 (WSPAPI *LPWPUQUEUEAPC)(
00375   IN LPWSATHREADID lpThreadId,
00376   IN LPWSAUSERAPC lpfnUserApc,
00377   IN DWORD_PTR dwContext,
00378   OUT LPINT lpErrno);
00379 
00380 typedef BOOL
00381 (WSPAPI *LPWPURESETEVENT)(
00382   IN WSAEVENT hEvent,
00383   OUT LPINT lpErrno);
00384 
00385 typedef BOOL
00386 (WSPAPI *LPWPUSETEVENT)(
00387   IN WSAEVENT hEvent,
00388   OUT LPINT lpErrno);
00389 
00390 typedef int
00391 (WSPAPI *LPWPUOPENCURRENTTHREAD)(
00392   OUT LPWSATHREADID lpThreadId,
00393   OUT LPINT lpErrno);
00394 
00395 typedef int
00396 (WSPAPI *LPWPUCLOSETHREAD)(
00397   IN LPWSATHREADID lpThreadId,
00398   OUT LPINT lpErrno);
00399 
00400 typedef int
00401 (WSPAPI *LPWPUCOMPLETEOVERLAPPEDREQUEST)(
00402   IN SOCKET s,
00403   IN OUT LPWSAOVERLAPPED lpOverlapped,
00404   IN DWORD dwError,
00405   IN DWORD cbTransferred,
00406   OUT LPINT lpErrno);
00407 
00408 typedef int
00409 (WSPAPI *LPWSCENUMPROTOCOLS)(
00410   IN LPINT lpiProtocols OPTIONAL,
00411   OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL,
00412   IN OUT LPDWORD lpdwBufferLength,
00413   OUT LPINT lpErrno);
00414 
00415 typedef int
00416 (WSPAPI *LPWSCDEINSTALLPROVIDER)(
00417   IN LPGUID lpProviderId,
00418   OUT LPINT lpErrno);
00419 
00420 typedef int
00421 (WSPAPI *LPWSCINSTALLPROVIDER)(
00422   IN LPGUID lpProviderId,
00423   IN const WCHAR FAR *lpszProviderDllPath,
00424   IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
00425   IN DWORD dwNumberOfEntries,
00426   OUT LPINT lpErrno);
00427 
00428 typedef int
00429 (WSPAPI *LPWSCGETPROVIDERPATH)(
00430   IN LPGUID lpProviderId,
00431   OUT WCHAR FAR *lpszProviderDllPath,
00432   IN OUT LPINT lpProviderDllPathLen,
00433   OUT LPINT lpErrno);
00434 
00435 typedef INT
00436 (WSPAPI *LPWSCINSTALLNAMESPACE)(
00437   IN LPWSTR lpszIdentifier,
00438   IN LPWSTR lpszPathName,
00439   IN DWORD dwNameSpace,
00440   IN DWORD dwVersion,
00441   IN LPGUID lpProviderId);
00442 
00443 typedef INT
00444 (WSPAPI *LPWSCUNINSTALLNAMESPACE)(
00445   IN LPGUID lpProviderId);
00446 
00447 typedef INT
00448 (WSPAPI *LPWSCENABLENSPROVIDER)(
00449   IN LPGUID lpProviderId,
00450   IN BOOL fEnable);
00451 
00452 /* Service provider procedure table */
00453 typedef struct _WSPPROC_TABLE {
00454   LPWSPACCEPT lpWSPAccept;
00455   LPWSPADDRESSTOSTRING lpWSPAddressToString;
00456   LPWSPASYNCSELECT lpWSPAsyncSelect;
00457   LPWSPBIND lpWSPBind;
00458   LPWSPCANCELBLOCKINGCALL lpWSPCancelBlockingCall;
00459   LPWSPCLEANUP lpWSPCleanup;
00460   LPWSPCLOSESOCKET lpWSPCloseSocket;
00461   LPWSPCONNECT lpWSPConnect;
00462   LPWSPDUPLICATESOCKET lpWSPDuplicateSocket;
00463   LPWSPENUMNETWORKEVENTS lpWSPEnumNetworkEvents;
00464   LPWSPEVENTSELECT lpWSPEventSelect;
00465   LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult;
00466   LPWSPGETPEERNAME lpWSPGetPeerName;
00467   LPWSPGETSOCKNAME lpWSPGetSockName;
00468   LPWSPGETSOCKOPT lpWSPGetSockOpt;
00469   LPWSPGETQOSBYNAME lpWSPGetQOSByName;
00470   LPWSPIOCTL lpWSPIoctl;
00471   LPWSPJOINLEAF lpWSPJoinLeaf;
00472   LPWSPLISTEN lpWSPListen;
00473   LPWSPRECV lpWSPRecv;
00474   LPWSPRECVDISCONNECT lpWSPRecvDisconnect;
00475   LPWSPRECVFROM lpWSPRecvFrom;
00476   LPWSPSELECT lpWSPSelect;
00477   LPWSPSEND lpWSPSend;
00478   LPWSPSENDDISCONNECT lpWSPSendDisconnect;
00479   LPWSPSENDTO lpWSPSendTo;
00480   LPWSPSETSOCKOPT lpWSPSetSockOpt;
00481   LPWSPSHUTDOWN lpWSPShutdown;
00482   LPWSPSOCKET lpWSPSocket;
00483   LPWSPSTRINGTOADDRESS lpWSPStringToAddress;
00484 } WSPPROC_TABLE, FAR* LPWSPPROC_TABLE;
00485 
00486 typedef INT
00487 (WSAAPI *LPNSPCLEANUP)(
00488   IN LPGUID lpProviderId);
00489 
00490 typedef INT
00491 (WSAAPI *LPNSPLOOKUPSERVICEBEGIN)(
00492   IN LPGUID lpProviderId,
00493   IN LPWSAQUERYSETW lpqsRestrictions,
00494   IN LPWSASERVICECLASSINFOW lpServiceClassInfo,
00495   IN DWORD dwControlFlags,
00496   OUT LPHANDLE lphLookup);
00497 
00498 typedef INT
00499 (WSAAPI *LPNSPLOOKUPSERVICENEXT)(
00500   IN HANDLE hLookup,
00501   IN DWORD dwControlFlags,
00502   IN OUT LPDWORD lpdwBufferLength,
00503   OUT LPWSAQUERYSETW lpqsResults);
00504 
00505 #if(_WIN32_WINNT >= 0x0501)
00506 typedef INT
00507 (WSAAPI *LPNSPIOCTL)(
00508   IN HANDLE hLookup,
00509   IN DWORD dwControlCode,
00510   IN LPVOID lpvInBuffer,
00511   IN DWORD cbInBuffer,
00512   OUT LPVOID lpvOutBuffer,
00513   IN DWORD cbOutBuffer,
00514   OUT LPDWORD lpcbBytesReturned,
00515   IN LPWSACOMPLETION lpCompletion OPTIONAL,
00516   IN LPWSATHREADID lpThreadId);
00517 #endif
00518 
00519 typedef INT
00520 (WSAAPI *LPNSPLOOKUPSERVICEEND)(
00521   IN HANDLE hLookup);
00522 
00523 typedef INT
00524 (WSAAPI *LPNSPSETSERVICE)(
00525   IN LPGUID lpProviderId,
00526   IN LPWSASERVICECLASSINFOW lpServiceClassInfo,
00527   IN LPWSAQUERYSETW lpqsRegInfo,
00528   IN WSAESETSERVICEOP essOperation,
00529   IN DWORD dwControlFlags);
00530 
00531 typedef INT
00532 (WSAAPI *LPNSPINSTALLSERVICECLASS)(
00533   IN LPGUID lpProviderId,
00534   IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
00535 
00536 typedef INT
00537 (WSAAPI *LPNSPREMOVESERVICECLASS)(
00538   IN LPGUID lpProviderId,
00539   IN LPGUID lpServiceClassId);
00540 
00541 typedef INT
00542 (WSAAPI *LPNSPGETSERVICECLASSINFO)(
00543   IN LPGUID lpProviderId,
00544   IN LPDWORD lpdwBufSize,
00545   IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
00546 
00547 typedef INT
00548 (WSAAPI *LPNSPV2STARTUP)(
00549   IN LPGUID lpProviderId,
00550   OUT LPVOID *ppvClientSessionArg);
00551 
00552 typedef INT
00553 (WSAAPI *LPNSPV2CLEANUP)(
00554   IN LPGUID lpProviderId,
00555   IN LPVOID pvClientSessionArg);
00556 
00557 typedef INT
00558 (WSAAPI *LPNSPV2LOOKUPSERVICEBEGIN)(
00559   IN LPGUID lpProviderId,
00560   IN LPWSAQUERYSET2W lpqsRestrictions,
00561   IN DWORD dwControlFlags,
00562   IN LPVOID lpvClientSessionArg,
00563   OUT LPHANDLE lphLookup);
00564 
00565 typedef VOID
00566 (WSAAPI *LPNSPV2LOOKUPSERVICENEXTEX)(
00567   IN HANDLE hAsyncCall,
00568   IN HANDLE hLookup,
00569   IN DWORD dwControlFlags,
00570   IN LPDWORD lpdwBufferLength,
00571   OUT LPWSAQUERYSET2W lpqsResults);
00572 
00573 typedef INT
00574 (WSAAPI *LPNSPV2LOOKUPSERVICEEND)(
00575   IN HANDLE hLookup);
00576 
00577 typedef VOID
00578 (WSAAPI *LPNSPV2SETSERVICEEX)(
00579   IN HANDLE hAsyncCall,
00580   IN LPGUID lpProviderId,
00581   IN LPWSAQUERYSET2W lpqsRegInfo,
00582   IN WSAESETSERVICEOP essOperation,
00583   IN DWORD dwControlFlags,
00584   IN LPVOID lpvClientSessionArg);
00585 
00586 typedef VOID
00587 (WSAAPI *LPNSPV2CLIENTSESSIONRUNDOWN)(
00588   IN LPGUID lpProviderId,
00589   IN LPVOID pvClientSessionArg);
00590 
00591 /* Service Provider upcall table */
00592 typedef struct _WSPUPCALLTABLE {
00593   LPWPUCLOSEEVENT lpWPUCloseEvent;
00594   LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
00595   LPWPUCREATEEVENT lpWPUCreateEvent;
00596   LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
00597   LPWPUFDISSET lpWPUFDIsSet;
00598   LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
00599   LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
00600   LPWPUPOSTMESSAGE lpWPUPostMessage;
00601   LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
00602   LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
00603   LPWPUQUEUEAPC lpWPUQueueApc;
00604   LPWPURESETEVENT lpWPUResetEvent;
00605   LPWPUSETEVENT lpWPUSetEvent;
00606   LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
00607   LPWPUCLOSETHREAD lpWPUCloseThread;
00608 } WSPUPCALLTABLE, FAR* LPWSPUPCALLTABLE;
00609 
00610 typedef int
00611 (WSPAPI *LPWSPSTARTUP)(
00612   IN WORD wVersionRequested,
00613   IN LPWSPDATA lpWSPData,
00614   IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
00615   IN WSPUPCALLTABLE UpcallTable,
00616   OUT LPWSPPROC_TABLE lpProcTable);
00617 
00618 #if (_WIN32_WINNT >= 0x0600)
00619 
00620 #define LSP_SYSTEM             0x80000000
00621 #define LSP_INSPECTOR          0x00000001
00622 #define LSP_REDIRECTOR         0x00000002
00623 #define LSP_PROXY              0x00000004
00624 #define LSP_FIREWALL           0x00000008
00625 #define LSP_INBOUND_MODIFY     0x00000010
00626 #define LSP_OUTBOUND_MODIFY    0x00000020
00627 #define LSP_CRYPTO_COMPRESS    0x00000040
00628 #define LSP_LOCAL_CACHE        0x00000080
00629 
00630 typedef enum _WSC_PROVIDER_INFO_TYPE {
00631   ProviderInfoLspCategories,
00632   ProviderInfoAudit
00633 } WSC_PROVIDER_INFO_TYPE ;
00634 
00635 typedef struct _WSC_PROVIDER_AUDIT_INFO {
00636   DWORD RecordSize;
00637   PVOID Reserved;
00638 } WSC_PROVIDER_AUDIT_INFO;
00639 
00640 #endif /* (_WIN32_WINNT >= 0x0600) */
00641 
00642 typedef struct _NSP_ROUTINE {
00643   DWORD cbSize;
00644   DWORD dwMajorVersion;
00645   DWORD dwMinorVersion;
00646   LPNSPCLEANUP NSPCleanup;
00647   LPNSPLOOKUPSERVICEBEGIN NSPLookupServiceBegin;
00648   LPNSPLOOKUPSERVICENEXT NSPLookupServiceNext;
00649   LPNSPLOOKUPSERVICEEND NSPLookupServiceEnd;
00650   LPNSPSETSERVICE NSPSetService;
00651   LPNSPINSTALLSERVICECLASS NSPInstallServiceClass;
00652   LPNSPREMOVESERVICECLASS NSPRemoveServiceClass;
00653   LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo;
00654   LPNSPIOCTL NSPIoctl;
00655 } NSP_ROUTINE, *PNSP_ROUTINE, FAR* LPNSP_ROUTINE;
00656 
00657 typedef INT
00658 (WSAAPI *LPNSPSTARTUP)(
00659   IN LPGUID lpProviderId,
00660   IN OUT LPNSP_ROUTINE lpnspRoutines);
00661 
00662 typedef struct _NSPV2_ROUTINE {
00663   DWORD cbSize;
00664   DWORD dwMajorVersion;
00665   DWORD dwMinorVersion;
00666   LPNSPV2STARTUP NSPv2Startup;
00667   LPNSPV2CLEANUP NSPv2Cleanup;
00668   LPNSPV2LOOKUPSERVICEBEGIN NSPv2LookupServiceBegin;  
00669   LPNSPV2LOOKUPSERVICENEXTEX NSPv2LookupServiceNextEx;
00670   LPNSPV2LOOKUPSERVICEEND NSPv2LookupServiceEnd;  
00671   LPNSPV2SETSERVICEEX NSPv2SetServiceEx;
00672   LPNSPV2CLIENTSESSIONRUNDOWN NSPv2ClientSessionRundown;
00673 } NSPV2_ROUTINE, *PNSPV2_ROUTINE, *LPNSPV2_ROUTINE;
00674 typedef const NSPV2_ROUTINE *PCNSPV2_ROUTINE, *LPCNSPV2_ROUTINE;
00675 
00676 int
00677 WSPAPI
00678 WSPStartup(
00679   IN WORD wVersionRequested,
00680   IN LPWSPDATA lpWSPData,
00681   IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
00682   IN WSPUPCALLTABLE UpcallTable,
00683   OUT LPWSPPROC_TABLE lpProcTable);
00684 
00685 int
00686 WSPAPI
00687 WSCEnumProtocols(
00688   IN LPINT lpiProtocols OPTIONAL,
00689   OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL,
00690   IN OUT LPDWORD lpdwBufferLength,
00691   OUT LPINT lpErrno);
00692 
00693 #if (_WIN32_WINNT >= 0x0501)
00694 
00695 int
00696 WSPAPI
00697 WPUOpenCurrentThread(
00698   OUT LPWSATHREADID lpThreadId,
00699   OUT LPINT lpErrno);
00700 
00701 int
00702 WSPAPI
00703 WPUCloseThread(
00704   IN LPWSATHREADID lpThreadId,
00705   OUT LPINT lpErrno);
00706 
00707 #define WSCEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
00708 #define LPFN_WSCENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
00709 
00710 int
00711 WSPAPI
00712 WSCUpdateProvider(
00713   IN LPGUID lpProviderId,
00714   IN const WCHAR FAR *lpszProviderDllPath,
00715   IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
00716   IN DWORD dwNumberOfEntries,
00717   OUT LPINT lpErrno);
00718 
00719 typedef int
00720 (WSPAPI *LPWSCUPDATEPROVIDER)(
00721   IN LPGUID lpProviderId,
00722   IN const WCHAR FAR *lpszProviderDllPath,
00723   IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
00724   IN DWORD dwNumberOfEntries,
00725   OUT LPINT lpErrno);
00726 
00727 #if defined(_WIN64)
00728 
00729 int
00730 WSPAPI
00731 WSCEnumProtocols32(
00732   IN LPINT lpiProtocols OPTIONAL,
00733   OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer,
00734   IN OUT LPDWORD lpdwBufferLength,
00735   OUT LPINT lpErrno);
00736 
00737 int
00738 WSPAPI
00739 WSCDeinstallProvider32(
00740   IN LPGUID lpProviderId,
00741   OUT LPINT lpErrno);
00742 
00743 int
00744 WSPAPI
00745 WSCInstallProvider64_32(
00746   IN LPGUID lpProviderId,
00747   IN const WCHAR FAR *lpszProviderDllPath,
00748   IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
00749   IN DWORD dwNumberOfEntries,
00750   OUT LPINT lpErrno);
00751 
00752 int
00753 WSPAPI
00754 WSCGetProviderPath32(
00755   IN LPGUID lpProviderId,
00756   OUT WCHAR FAR *lpszProviderDllPath,
00757   IN OUT LPINT lpProviderDllPathLen,
00758   OUT LPINT lpErrno);
00759 
00760 int
00761 WSPAPI
00762 WSCUpdateProvider32(
00763   IN LPGUID lpProviderId,
00764   IN const WCHAR FAR *lpszProviderDllPath,
00765   IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
00766   IN DWORD dwNumberOfEntries,
00767   OUT LPINT lpErrno);
00768 
00769 INT
00770 WSAAPI
00771 WSCEnumNameSpaceProviders32(
00772   IN OUT LPDWORD lpdwBufferLength,
00773   OUT LPWSANAMESPACE_INFOW lpnspBuffer);
00774 
00775 INT
00776 WSPAPI
00777 WSCInstallNameSpace32(
00778   IN LPWSTR lpszIdentifier,
00779   IN LPWSTR lpszPathName,
00780   IN DWORD dwNameSpace,
00781   IN DWORD dwVersion,
00782   IN LPGUID lpProviderId);
00783 
00784 INT
00785 WSPAPI
00786 WSCUnInstallNameSpace32(
00787   IN LPGUID lpProviderId);
00788 
00789 INT
00790 WSPAPI
00791 WSCEnableNSProvider32(
00792   IN LPGUID lpProviderId,
00793   IN BOOL fEnable);
00794 
00795 #endif /* defined(_WIN64) */
00796 
00797 #endif /* defined(_WIN32_WINNT >= 0x0501) */
00798 
00799 int
00800 WSPAPI
00801 WSCDeinstallProvider(
00802   IN LPGUID lpProviderId,
00803   OUT LPINT lpErrno);
00804 
00805 int
00806 WSPAPI
00807 WSCInstallProvider(
00808   IN LPGUID lpProviderId,
00809   IN const WCHAR FAR *lpszProviderDllPath,
00810   IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
00811   IN DWORD dwNumberOfEntries,
00812   OUT LPINT lpErrno);
00813 
00814 int
00815 WSPAPI
00816 WSCGetProviderPath(
00817   IN LPGUID lpProviderId,
00818   OUT WCHAR FAR *lpszProviderDllPath,
00819   IN OUT LPINT lpProviderDllPathLen,
00820   OUT LPINT lpErrno);
00821 
00822 #if (_WIN32_WINNT < 0x0600)
00823 
00824 int
00825 WSPAPI
00826 WSCInstallQOSTemplate(
00827   IN const LPGUID Guid,
00828   IN LPWSABUF QosName,
00829   IN LPQOS Qos);
00830 
00831 typedef int
00832 (WSPAPI *LPWSCINSTALLQOSTEMPLATE)(
00833   IN const LPGUID Guid,
00834   IN LPWSABUF QosName,
00835   IN LPQOS Qos);
00836 
00837 int
00838 WSPAPI
00839 WSCRemoveQOSTemplate(
00840   IN const LPGUID Guid,
00841   IN LPWSABUF QosName);
00842 
00843 typedef int
00844 (WSPAPI *LPWSCREMOVEQOSTEMPLATE)(
00845   IN const LPGUID Guid,
00846   IN LPWSABUF QosName);
00847 
00848 #endif /* (_WIN32_WINNT < 0x0600) */
00849 
00850 #if(_WIN32_WINNT >= 0x0600)
00851 
00852 int
00853 WSPAPI
00854 WSCSetProviderInfo(
00855   IN LPGUID lpProviderId,
00856   IN WSC_PROVIDER_INFO_TYPE InfoType,
00857   IN PBYTE Info,
00858   IN size_t InfoSize,
00859   IN DWORD Flags,
00860   OUT LPINT lpErrno);
00861 
00862 int
00863 WSPAPI
00864 WSCGetProviderInfo(
00865   IN LPGUID lpProviderId,
00866   IN WSC_PROVIDER_INFO_TYPE InfoType,
00867   OUT PBYTE Info,
00868   IN OUT *InfoSize,
00869   IN DWORD Flags,
00870   OUT LPINT lpErrno);
00871 
00872 int
00873 WSPAPI
00874 WSCSetApplicationCategory(
00875   IN LPCWSTR Path,
00876   IN DWORD PathLength,
00877   IN LPCWSTR Extra OPTIONAL,
00878   IN DWORD ExtraLength,
00879   IN DWORD PermittedLspCategories,
00880   OUT DWORD *pPrevPermLspCat OPTIONAL,
00881   OUT LPINT lpErrno);
00882 
00883 int
00884 WSPAPI
00885 WSCGetApplicationCategory(
00886   IN LPCWSTR Path,
00887   IN DWORD PathLength,
00888   IN LPCWSTR Extra OPTIONAL,
00889   IN DWORD ExtraLength,
00890   OUT DWORD *pPermittedLspCategories,
00891   OUT LPINT lpErrno);
00892 
00893 #define WSCEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExW
00894 #define LPFN_WSCENUMNAMESPACEPROVIDERSEX LPFN_WSAENUMNAMESPACEPROVIDERSEXW
00895 
00896 INT
00897 WSPAPI
00898 WSCInstallNameSpaceEx(
00899   IN LPWSTR lpszIdentifier,
00900   IN LPWSTR lpszPathName,
00901   IN DWORD dwNameSpace,
00902   IN DWORD dwVersion,
00903   IN LPGUID lpProviderId,
00904   IN LPBLOB lpProviderSpecific);
00905 
00906 INT
00907 WSAAPI
00908 WSAAdvertiseProvider(
00909   IN const GUID *puuidProviderId,
00910   IN const LPCNSPV2_ROUTINE pNSPv2Routine);
00911 
00912 INT
00913 WSAAPI
00914 WSAUnadvertiseProvider(
00915   IN const GUID *puuidProviderId);
00916 
00917 INT
00918 WSAAPI
00919 WSAProviderCompleteAsyncCall(
00920   IN HANDLE hAsyncCall,
00921   IN INT iRetCode);
00922 
00923 #if defined(_WIN64)
00924 
00925 int
00926 WSPAPI
00927 WSCSetProviderInfo32(
00928   IN LPGUID lpProviderId,
00929   IN WSC_PROVIDER_INFO_TYPE InfoType,
00930   IN PBYTE Info,
00931   IN size_t InfoSize,
00932   IN DWORD Flags,
00933   OUT LPINT lpErrno);
00934 
00935 int
00936 WSPAPI
00937 WSCGetProviderInfo32(
00938   IN LPGUID lpProviderId,
00939   IN WSC_PROVIDER_INFO_TYPE InfoType,
00940   OUT PBYTE Info,
00941   IN OUT size_t *InfoSize,
00942   IN DWORD Flags,
00943   OUT LPINT lpErrno);
00944 
00945 INT
00946 WSAAPI
00947 WSCEnumNameSpaceProvidersEx32(
00948   IN OUT LPDWORD lpdwBufferLength,
00949   OUT LPWSANAMESPACE_INFOEXW lpnspBuffer);
00950 
00951 INT
00952 WSPAPI
00953 WSCInstallNameSpaceEx32(
00954   IN LPWSTR lpszIdentifier,
00955   IN LPWSTR lpszPathName,
00956   IN DWORD dwNameSpace,
00957   IN DWORD dwVersion,
00958   IN LPGUID lpProviderId,
00959   IN LPBLOB lpProviderSpecific);
00960 
00961 #endif /* (_WIN64) */
00962 
00963 #if defined(_WIN64)
00964 int
00965 WSPAPI
00966 WSCInstallProviderAndChains64_32(
00967 #else
00968 int
00969 WSPAPI
00970 WSCInstallProviderAndChains(
00971 #endif
00972   IN LPGUID lpProviderId,
00973   IN const LPWSTR lpszProviderDllPath,
00974 #if defined(_WIN64)
00975   IN const LPWSTR lpszProviderDllPath32,
00976 #endif
00977   IN const LPWSTR lpszLspName,
00978   IN DWORD dwServiceFlags,
00979   IN OUT LPWSAPROTOCOL_INFOW lpProtocolInfoList,
00980   IN DWORD dwNumberOfEntries,
00981   OUT LPDWORD lpdwCatalogEntryId OPTIONAL,
00982   OUT LPINT lpErrno);
00983 
00984 #endif /* (_WIN32_WINNT >= 0x0600) */
00985 
00986 BOOL
00987 WSPAPI
00988 WPUCloseEvent(
00989   IN WSAEVENT hEvent,
00990   OUT LPINT lpErrno);
00991 
00992 int
00993 WSPAPI
00994 WPUCloseSocketHandle(
00995   IN SOCKET s,
00996   OUT LPINT lpErrno);
00997 
00998 WSAEVENT
00999 WSPAPI
01000 WPUCreateEvent(
01001   OUT LPINT lpErrno);
01002 
01003 SOCKET
01004 WSPAPI
01005 WPUCreateSocketHandle(
01006   IN DWORD dwCatalogEntryId,
01007   IN DWORD_PTR dwContext,
01008   OUT LPINT lpErrno);
01009 
01010 int
01011 WSPAPI
01012 WPUFDIsSet(
01013   IN SOCKET s,
01014   IN fd_set FAR *fdset);
01015 
01016 int
01017 WSPAPI
01018 WPUGetProviderPath(
01019   IN LPGUID lpProviderId,
01020   OUT WCHAR FAR *lpszProviderDllPath,
01021   IN OUT LPINT lpProviderDllPathLen,
01022   OUT LPINT lpErrno);
01023 
01024 SOCKET
01025 WSPAPI
01026 WPUModifyIFSHandle(
01027   IN DWORD dwCatalogEntryId,
01028   IN SOCKET ProposedHandle,
01029   OUT LPINT lpErrno);
01030 
01031 BOOL
01032 WSPAPI
01033 WPUPostMessage(
01034   IN HWND hWnd,
01035   IN UINT Msg,
01036   IN WPARAM wParam,
01037   IN LPARAM lParam);
01038 
01039 int
01040 WSPAPI
01041 WPUQueryBlockingCallback(
01042   IN DWORD dwCatalogEntryId,
01043   OUT LPBLOCKINGCALLBACK FAR *lplpfnCallback,
01044   OUT PDWORD_PTR lpdwContext,
01045   OUT LPINT lpErrno);
01046 
01047 int
01048 WSPAPI
01049 WPUQuerySocketHandleContext(
01050   IN SOCKET s,
01051   OUT PDWORD_PTR lpContext,
01052   OUT LPINT lpErrno);
01053 
01054 int
01055 WSPAPI
01056 WPUQueueApc(
01057   IN LPWSATHREADID lpThreadId,
01058   IN LPWSAUSERAPC lpfnUserApc,
01059   IN DWORD_PTR dwContext,
01060   OUT LPINT lpErrno);
01061 
01062 BOOL
01063 WSPAPI
01064 WPUResetEvent(
01065   IN WSAEVENT hEvent,
01066   OUT LPINT lpErrno);
01067 
01068 BOOL
01069 WSPAPI
01070 WPUSetEvent(
01071   IN WSAEVENT hEvent,
01072   OUT LPINT lpErrno);
01073 
01074 int
01075 WSPAPI
01076 WPUCompleteOverlappedRequest(
01077   IN SOCKET s,
01078   IN OUT LPWSAOVERLAPPED lpOverlapped,
01079   IN DWORD dwError,
01080   IN DWORD cbTransferred,
01081   OUT LPINT lpErrno);
01082 
01083 INT
01084 WSPAPI
01085 WSCInstallNameSpace(
01086   IN LPWSTR lpszIdentifier,
01087   IN LPWSTR lpszPathName,
01088   IN DWORD dwNameSpace,
01089   IN DWORD dwVersion,
01090   IN LPGUID lpProviderId);
01091 
01092 INT
01093 WSPAPI
01094 WSCUnInstallNameSpace(
01095   IN LPGUID lpProviderId);
01096 
01097 INT
01098 WSPAPI
01099 WSCEnableNSProvider(
01100   IN LPGUID lpProviderId,
01101   IN BOOL fEnable);
01102 
01103 INT
01104 WSAAPI
01105 NSPStartup(
01106   IN LPGUID lpProviderId,
01107   IN OUT LPNSP_ROUTINE lpnspRoutines);
01108 
01109 #if !defined(_WIN64)
01110 #include <poppack.h>
01111 #endif
01112 
01113 #ifdef __cplusplus
01114 }
01115 #endif

Generated on Sat May 26 2012 04:31:50 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.