Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

149 lines
3.0 KiB

/*++
Copyright (c) 1999 Microsoft Corporation
Module Name:
socket.c
Abstract:
This module implements the user mode DAV miniredir routines pertaining to
initialization and closing of the socket data structures.
Author:
Rohan Kumar [RohanK] 27-May-1999
Revision History:
--*/
#include "pch.h"
#pragma hdrstop
#include "ntumrefl.h"
#include "usrmddav.h"
#include "global.h"
//
// Implementation of functions begins here.
//
//
// Data structure that is to receive details of the WinSock implementation.
//
WSADATA g_wsaData;
BOOLEAN g_socketinit = FALSE;
ULONG
InitializeTheSocketInterface(
VOID
)
/*++
Routine Description:
This routine initializes the socket interface. This has to be done before
any WinSock calls can be made.
Arguments:
none.
Return Value:
The return status for the operation
--*/
{
ULONG WStatus = ERROR_SUCCESS;
int err;
WORD VersionRequested;
//
// Request version 2.0.
//
VersionRequested = MAKEWORD(2, 0);
//
// The WSAStartup function must be the first Windows Sockets function
// called.
//
err = WSAStartup(VersionRequested, &g_wsaData);
if (err != 0) {
//
// We could not find a suitable Winsock lib.
//
DavPrint((DEBUG_ERRORS,
"InitializeTheSocketInterface/WSAStartup: Error Val = %d.\n",
err));
WStatus = (ULONG)err;
goto EXIT_THE_FUNCTION;
}
//
// Confirm that the lib supports version 2.0. Only Winsock versions 1.1 or
// higher support the GetHostByName call.
//
if (LOBYTE(g_wsaData.wVersion) != 2 || HIBYTE(g_wsaData.wVersion) != 0) {
DavPrint((DEBUG_ERRORS,
"InitializeTheSocketInterface/WSAStartup: Ver not supported.\n"));
//
// Cleanup and return error.
//
err = WSACleanup();
if (err == SOCKET_ERROR) {
WStatus = (ULONG)WSAGetLastError();
DavPrint((DEBUG_ERRORS,
"InitializeTheSocketInterface/WSACleanup: Error Val = "
"%08lx.\n", WStatus));
}
WStatus = ERROR_NOT_SUPPORTED;
goto EXIT_THE_FUNCTION;
}
EXIT_THE_FUNCTION:
if (WStatus == ERROR_SUCCESS) {
g_socketinit = TRUE;
}
return WStatus;
}
NTSTATUS
CleanupTheSocketInterface(
VOID
)
/*++
Routine Description:
This routine cleansup the data structures created during the initialization
of the socket interface.
Arguments:
none.
Return Value:
The return status for the operation
--*/
{
ULONG WStatus = ERROR_SUCCESS;
int err;
err = WSACleanup();
if (err == SOCKET_ERROR) {
WStatus = (ULONG)WSAGetLastError();
DavPrint((DEBUG_ERRORS,
"CleanupTheSocketInterface/WSACleanup: Error Val = "
"%08lx.\n", WStatus));
}
return WStatus;
}