forked from Mirrors/wine-wine
Provide stub implementations of GetTypeByNameA and SetServiceA.
parent
d61e43ca30
commit
1f7dbca935
|
@ -10,6 +10,7 @@ SYMBOLFILE = $(MODULE).tmp.o
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
protocol.c \
|
protocol.c \
|
||||||
|
service.c \
|
||||||
socket.c
|
socket.c
|
||||||
|
|
||||||
@MAKE_DLL_RULES@
|
@MAKE_DLL_RULES@
|
||||||
|
|
|
@ -44,12 +44,13 @@
|
||||||
|
|
||||||
#include "winbase.h"
|
#include "winbase.h"
|
||||||
#include "winnls.h"
|
#include "winnls.h"
|
||||||
#include "wine/unicode.h"
|
#include "wtypes.h"
|
||||||
#include "nspapi.h"
|
#include "nspapi.h"
|
||||||
#include "winsock2.h"
|
#include "winsock2.h"
|
||||||
#include "wsipx.h"
|
#include "wsipx.h"
|
||||||
#include "wshisotp.h"
|
#include "wshisotp.h"
|
||||||
|
|
||||||
|
#include "wine/unicode.h"
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(winsock);
|
WINE_DEFAULT_DEBUG_CHANNEL(winsock);
|
||||||
|
|
|
@ -0,0 +1,164 @@
|
||||||
|
/*
|
||||||
|
* WSOCK32 specific functions
|
||||||
|
*
|
||||||
|
* Copyright (C) 2002 Andrew Hughes
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include "winbase.h"
|
||||||
|
#include "winerror.h"
|
||||||
|
#include "winsock2.h"
|
||||||
|
#include "wtypes.h"
|
||||||
|
#include "nspapi.h"
|
||||||
|
|
||||||
|
#include "wine/debug.h"
|
||||||
|
|
||||||
|
WINE_DEFAULT_DEBUG_CHANNEL(winsock);
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* GetTypeByNameA [WSOCK32.1113]
|
||||||
|
*
|
||||||
|
* Retrieves a service type GUID for a network service specified by name
|
||||||
|
*
|
||||||
|
* PARAMETERS
|
||||||
|
* lpServiceName -- Pointer to a zero-terminated ASCII string that uniquely represents the name of the service
|
||||||
|
* lpServiceType -- Pointer to a variable to receive a GUID that specifies the type of network service
|
||||||
|
*
|
||||||
|
* RETURNS
|
||||||
|
* Zero on success, SOCKET_ERROR on failure.
|
||||||
|
* GetLastError can return ERROR_SERVICE_DOES_NOT_EXIST
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* Obsolete Microsoft-specific extension to Winsock 1.1.
|
||||||
|
* Protocol-independent name resolution provides equivalent functionality in Winsock 2.
|
||||||
|
*
|
||||||
|
* BUGS
|
||||||
|
* Unimplemented
|
||||||
|
*/
|
||||||
|
INT WINAPI GetTypeByNameA(LPSTR lpServiceName, LPGUID lpServiceType)
|
||||||
|
{
|
||||||
|
/* tell the user they've got a substandard implementation */
|
||||||
|
FIXME("wsock32: GetTypeByNameA(%p, %p): stub/n", lpServiceName, lpServiceType);
|
||||||
|
|
||||||
|
/* some programs may be able to compensate if they know what happened */
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return SOCKET_ERROR; /* error value */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* GetTypeByNameW [WSOCK32.1114]
|
||||||
|
*
|
||||||
|
* Retrieves a service type GUID for a network service specified by name
|
||||||
|
*
|
||||||
|
* PARAMETERS
|
||||||
|
* lpServiceName -- Pointer to a zero-terminated Unicode string that uniquely represents the name of the service
|
||||||
|
* lpServiceType -- Pointer to a variable to receive a GUID that specifies the type of network service
|
||||||
|
*
|
||||||
|
* RETURNS
|
||||||
|
* Zero on success, SOCKET_ERROR on failure.
|
||||||
|
* GetLastError can return ERROR_SERVICE_DOES_NOT_EXIST
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* Obsolete Microsoft-specific extension to Winsock 1.1.
|
||||||
|
* Protocol-independent name resolution provides equivalent functionality in Winsock 2.
|
||||||
|
*
|
||||||
|
* BUGS
|
||||||
|
* Unimplemented
|
||||||
|
*/
|
||||||
|
INT WINAPI GetTypeByNameW(LPWSTR lpServiceName, LPGUID lpServiceType)
|
||||||
|
{
|
||||||
|
/* tell the user they've got a substandard implementation */
|
||||||
|
FIXME("wsock32: GetTypeByNameW(%p, %p): stub/n", lpServiceName, lpServiceType);
|
||||||
|
|
||||||
|
/* some programs may be able to compensate if they know what happened */
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return SOCKET_ERROR; /* error value */
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* SetServiceA [WSOCK32.1117]
|
||||||
|
*
|
||||||
|
* Registers or unregisters a network service with one or more name spaces
|
||||||
|
*
|
||||||
|
* PARAMETERS
|
||||||
|
* dwNameSpace -- Name space or set of name spaces within which the function will operate
|
||||||
|
* dwOperation -- Specifies the operation that the function will perform
|
||||||
|
* dwFlags -- Set of bit flags that modify the function's operation
|
||||||
|
* lpServiceInfo -- Pointer to a ASCII SERVICE_INFO structure
|
||||||
|
* lpServiceAsyncInfo -- Reserved for future use. Must be NULL.
|
||||||
|
* lpdwStatusFlags -- Set of bit flags that receive function status information
|
||||||
|
*
|
||||||
|
* RETURNS
|
||||||
|
* SOCKET_ERROR on failure.
|
||||||
|
* GetLastError can return ERROR_ALREADY_REGISTERED
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* Obsolete Microsoft-specific extension to Winsock 1.1
|
||||||
|
* Protocol-independent name resolution provides equivalent functionality in Winsock 2.
|
||||||
|
*
|
||||||
|
* BUGS
|
||||||
|
* Unimplemented.
|
||||||
|
*/
|
||||||
|
INT WINAPI SetServiceA(DWORD dwNameSpace, DWORD dwOperation, DWORD dwFlags, LPSERVICE_INFOA lpServiceInfo,
|
||||||
|
LPSERVICE_ASYNC_INFO lpServiceAsyncInfo, LPDWORD lpdwStatusFlags)
|
||||||
|
{
|
||||||
|
/* tell the user they've got a substandard implementation */
|
||||||
|
FIXME("wsock32: SetServiceA(%lu, %lu, %lu, %p, %p, %p): stub/n", dwNameSpace, dwOperation, dwFlags,
|
||||||
|
lpServiceInfo, lpServiceAsyncInfo, lpdwStatusFlags);
|
||||||
|
|
||||||
|
/* some programs may be able to compensate if they know what happened */
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return SOCKET_ERROR; /* error value */
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* SetServiceW [WSOCK32.1118]
|
||||||
|
*
|
||||||
|
* Registers or unregisters a network service with one or more name spaces
|
||||||
|
*
|
||||||
|
* PARAMETERS
|
||||||
|
* dwNameSpace -- Name space or set of name spaces within which the function will operate
|
||||||
|
* dwOperation -- Specifies the operation that the function will perform
|
||||||
|
* dwFlags -- Set of bit flags that modify the function's operation
|
||||||
|
* lpServiceInfo -- Pointer to a Unicode SERVICE_INFO structure
|
||||||
|
* lpServiceAsyncInfo -- Reserved for future use. Must be NULL.
|
||||||
|
* lpdwStatusFlags -- Set of bit flags that receive function status information
|
||||||
|
*
|
||||||
|
* RETURNS
|
||||||
|
* SOCKET_ERROR on failure.
|
||||||
|
* GetLastError can return ERROR_ALREADY_REGISTERED
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* Obsolete Microsoft-specific extension to Winsock 1.1
|
||||||
|
* Protocol-independent name resolution provides equivalent functionality in Winsock 2.
|
||||||
|
*
|
||||||
|
* BUGS
|
||||||
|
* Unimplemented.
|
||||||
|
*/
|
||||||
|
INT WINAPI SetServiceW(DWORD dwNameSpace, DWORD dwOperation, DWORD dwFlags, LPSERVICE_INFOW lpServiceInfo,
|
||||||
|
LPSERVICE_ASYNC_INFO lpServiceAsyncInfo, LPDWORD lpdwStatusFlags)
|
||||||
|
{
|
||||||
|
/* tell the user they've got a substandard implementation */
|
||||||
|
FIXME("wsock32: SetServiceW(%lu, %lu, %lu, %p, %p, %p): stub/n", dwNameSpace, dwOperation, dwFlags,
|
||||||
|
lpServiceInfo, lpServiceAsyncInfo, lpdwStatusFlags);
|
||||||
|
|
||||||
|
/* some programs may be able to compensate if they know what happened */
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return SOCKET_ERROR; /* error value */
|
||||||
|
}
|
|
@ -64,12 +64,12 @@
|
||||||
1110 stub GetAddressByNameW
|
1110 stub GetAddressByNameW
|
||||||
1111 stdcall EnumProtocolsA(ptr ptr ptr) EnumProtocolsA
|
1111 stdcall EnumProtocolsA(ptr ptr ptr) EnumProtocolsA
|
||||||
1112 stdcall EnumProtocolsW(ptr ptr ptr) EnumProtocolsW
|
1112 stdcall EnumProtocolsW(ptr ptr ptr) EnumProtocolsW
|
||||||
#1113 stub GetTypeByNameA
|
1113 stdcall GetTypeByNameA(str ptr) GetTypeByNameA
|
||||||
#1114 stub GetTypeByNameW
|
1114 stdcall GetTypeByNameW(wstr ptr) GetTypeByNameW
|
||||||
#1115 stub GetNameByTypeA
|
#1115 stub GetNameByTypeA
|
||||||
#1116 stub GetNameByTypeW
|
#1116 stub GetNameByTypeW
|
||||||
#1117 stub SetServiceA
|
1117 stdcall SetServiceA(long long long ptr ptr ptr) SetServiceA
|
||||||
#1118 stub SetServiceW
|
1118 stdcall SetServiceW(long long long ptr ptr ptr) SetServiceW
|
||||||
#1119 stub GetServiceA
|
#1119 stub GetServiceA
|
||||||
#1120 stub GetServiceW
|
#1120 stub GetServiceW
|
||||||
#1130 stub NPLoadNameSpaces
|
#1130 stub NPLoadNameSpaces
|
||||||
|
|
116
include/nspapi.h
116
include/nspapi.h
|
@ -21,8 +21,6 @@
|
||||||
#ifndef _WINE_NSPAPI_
|
#ifndef _WINE_NSPAPI_
|
||||||
#define _WINE_NSPAPI_
|
#define _WINE_NSPAPI_
|
||||||
|
|
||||||
#include "windef.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif /* defined(__cplusplus) */
|
#endif /* defined(__cplusplus) */
|
||||||
|
@ -57,7 +55,7 @@ typedef struct _PROTOCOL_INFOA
|
||||||
INT iProtocol;
|
INT iProtocol;
|
||||||
DWORD dwMessageSize;
|
DWORD dwMessageSize;
|
||||||
LPSTR lpProtocol;
|
LPSTR lpProtocol;
|
||||||
} PROTOCOL_INFOA;
|
} PROTOCOL_INFOA, *PPROTOCOL_INFOA, *LPPROTOCOL_INFOA;
|
||||||
|
|
||||||
typedef struct _PROTOCOL_INFOW
|
typedef struct _PROTOCOL_INFOW
|
||||||
{
|
{
|
||||||
|
@ -69,14 +67,120 @@ typedef struct _PROTOCOL_INFOW
|
||||||
INT iProtocol;
|
INT iProtocol;
|
||||||
DWORD dwMessageSize;
|
DWORD dwMessageSize;
|
||||||
LPWSTR lpProtocol;
|
LPWSTR lpProtocol;
|
||||||
} PROTOCOL_INFOW;
|
} PROTOCOL_INFOW, *PPROTOCOL_INFOW, *LPPROTOCOL_INFOW;
|
||||||
|
|
||||||
|
DECL_WINELIB_TYPE_AW(PROTOCOL_INFO)
|
||||||
|
DECL_WINELIB_TYPE_AW(PPROTOCOL_INFO)
|
||||||
|
DECL_WINELIB_TYPE_AW(LPPROTOCOL_INFO)
|
||||||
|
|
||||||
|
typedef struct _SERVICE_ADDRESS
|
||||||
|
{
|
||||||
|
DWORD dwAddressType;
|
||||||
|
DWORD dwAddressFlags;
|
||||||
|
DWORD dwAddressLength;
|
||||||
|
DWORD dwPrincipalLength;
|
||||||
|
BYTE* lpAddress;
|
||||||
|
BYTE* lpPrincipal;
|
||||||
|
} SERVICE_ADDRESS, *PSERVICE_ADDRESS, *LPSERVICE_ADDRESS;
|
||||||
|
|
||||||
|
typedef struct _SERVICE_ADDRESSES
|
||||||
|
{
|
||||||
|
DWORD dwAddressCount;
|
||||||
|
SERVICE_ADDRESS Addresses[1];
|
||||||
|
} SERVICE_ADDRESSES, *PSERVICE_ADDRESSES, *LPSERVICE_ADDRESSES;
|
||||||
|
|
||||||
|
typedef struct _SERVICE_INFOA
|
||||||
|
{
|
||||||
|
LPGUID lpServiceType;
|
||||||
|
LPSTR lpServiceName;
|
||||||
|
LPSTR lpComment;
|
||||||
|
LPSTR lpLocale;
|
||||||
|
DWORD dwDisplayHint;
|
||||||
|
DWORD dwVersion;
|
||||||
|
DWORD dwTime;
|
||||||
|
LPSTR lpMachineName;
|
||||||
|
LPSERVICE_ADDRESSES lpServiceAddress;
|
||||||
|
BLOB ServiceSpecificInfo;
|
||||||
|
} SERVICE_INFOA, *PSERVICE_INFOA, *LPSERVICE_INFOA;
|
||||||
|
|
||||||
|
typedef struct _SERVICE_INFOW
|
||||||
|
{
|
||||||
|
LPGUID lpServiceType;
|
||||||
|
LPWSTR lpServiceName;
|
||||||
|
LPWSTR lpComment;
|
||||||
|
LPWSTR lpLocale;
|
||||||
|
DWORD dwDisplayHint;
|
||||||
|
DWORD dwVersion;
|
||||||
|
DWORD dwTime;
|
||||||
|
LPSTR lpMachineName;
|
||||||
|
LPSERVICE_ADDRESSES lpServiceAddress;
|
||||||
|
BLOB ServiceSpecificInfo; /* May point to SERVICE_TYPE_INFO_ABS */
|
||||||
|
} SERVICE_INFOW, *PSERVICE_INFOW, *LPSERVICE_INFOW;
|
||||||
|
|
||||||
|
DECL_WINELIB_TYPE_AW(SERVICE_INFO)
|
||||||
|
DECL_WINELIB_TYPE_AW(PSERVICE_INFO)
|
||||||
|
DECL_WINELIB_TYPE_AW(LPSERVICE_INFO)
|
||||||
|
|
||||||
|
typedef struct _SERVICE_TYPE_VALUE_ABSA
|
||||||
|
{
|
||||||
|
DWORD dwNameSpace; /* Name space or set of name spaces */
|
||||||
|
DWORD dwValueType; /* Type of the value data */
|
||||||
|
DWORD dwValueSize; /* Size of the value data */
|
||||||
|
LPSTR lpValueName; /* Name of the value */
|
||||||
|
PVOID lpValue; /* Pointer to the value data */
|
||||||
|
} SERVICE_TYPE_VALUE_ABSA, *PSERVICE_TYPE_VALUE_ABSA, *LPSERVICE_TYPE_VALUE_ABSA;
|
||||||
|
|
||||||
|
typedef struct _SERVICE_TYPE_VALUE_ABSW
|
||||||
|
{
|
||||||
|
DWORD dwNameSpace; /* Name space or set of name spaces */
|
||||||
|
DWORD dwValueType; /* Type of the value data */
|
||||||
|
DWORD dwValueSize; /* Size of the value data */
|
||||||
|
LPWSTR lpValueName; /* Name of the value */
|
||||||
|
PVOID lpValue; /* Pointer to the value data */
|
||||||
|
} SERVICE_TYPE_VALUE_ABSW, *PSERVICE_TYPE_VALUE_ABSW, *LPSERVICE_TYPE_VALUE_ABSW;
|
||||||
|
|
||||||
|
DECL_WINELIB_TYPE_AW(SERVICE_TYPE_VALUE_ABS)
|
||||||
|
DECL_WINELIB_TYPE_AW(PSERVICE_TYPE_VALUE_ABS)
|
||||||
|
DECL_WINELIB_TYPE_AW(LPSERVICE_TYPE_VALUE_ABS)
|
||||||
|
|
||||||
|
typedef struct _SERVICE_TYPE_INFO_ABSA
|
||||||
|
{
|
||||||
|
LPSTR lpTypeName; /* Name of the network service type */
|
||||||
|
DWORD dwValueCount; /* Number of SERVICE_TYPE_VALUE_ABS structures */
|
||||||
|
SERVICE_TYPE_VALUE_ABSA Values[1]; /* Array of SERVICE_TYPE_VALUE_ABS structures */
|
||||||
|
} SERVICE_TYPE_INFO_ABSA, *PSERVICE_TYPE_INFO_ABSA, *LPSERVICE_TYPE_INFO_ABSA;
|
||||||
|
|
||||||
|
typedef struct _SERVICE_TYPE_INFO_ABSW
|
||||||
|
{
|
||||||
|
LPWSTR lpTypeName; /* Name of the network service type */
|
||||||
|
DWORD dwValueCount; /* Number of SERVICE_TYPE_VALUE_ABS structures */
|
||||||
|
SERVICE_TYPE_VALUE_ABSW Values[1]; /* Array of SERVICE_TYPE_VALUE_ABS structures */
|
||||||
|
} SERVICE_TYPE_INFO_ABSW, *PSERVICE_TYPE_INFO_ABSW, *LPSERVICE_TYPE_INFO_ABSW;
|
||||||
|
|
||||||
|
DECL_WINELIB_TYPE_AW(SERVICE_TYPE_INFO_ABS)
|
||||||
|
DECL_WINELIB_TYPE_AW(PSERVICE_TYPE_INFO_ABS)
|
||||||
|
DECL_WINELIB_TYPE_AW(LPSERVICE_TYPE_INFO_ABS)
|
||||||
|
|
||||||
|
typedef void (*LPSERVICE_CALLBACK_PROC)(LPARAM lParam, HANDLE hAsyncTaskHandle);
|
||||||
|
|
||||||
|
typedef struct _SERVICE_ASYNC_INFO
|
||||||
|
{
|
||||||
|
LPSERVICE_CALLBACK_PROC lpServiceCallbackProc;
|
||||||
|
LPARAM lParam;
|
||||||
|
HANDLE hAsyncTaskHandle;
|
||||||
|
} SERVICE_ASYNC_INFO, *PSERVICE_ASYNC_INFO, *LPSERVICE_ASYNC_INFO;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* function prototypes
|
* function prototypes
|
||||||
*/
|
*/
|
||||||
|
INT WINAPI GetTypeByNameA(LPSTR lpServiceName, LPGUID lpServiceType);
|
||||||
|
INT WINAPI GetTypeByNameW(LPWSTR lpServiceName, LPGUID lpServiceType);
|
||||||
|
#define GetTypeByName WINELIB_NAME_AW(GetTypeByName)
|
||||||
|
INT WINAPI SetServiceA(DWORD dwNameSpace, DWORD dwOperation, DWORD dwFlags, LPSERVICE_INFOA lpServiceInfo,
|
||||||
|
LPSERVICE_ASYNC_INFO lpServiceAsyncInfo, LPDWORD lpdwStatusFlags);
|
||||||
|
INT WINAPI SetServiceW(DWORD dwNameSpace, DWORD dwOperation, DWORD dwFlags, LPSERVICE_INFOW lpServiceInfo,
|
||||||
|
LPSERVICE_ASYNC_INFO lpServiceAsyncInfo, LPDWORD lpdwStatusFlags);
|
||||||
|
#define SetService WINELIB_NAME_AW(SetService)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|
Loading…
Reference in New Issue