windows-nt/Source/XPSP1/NT/ds/netapi/svcdlls/nwsap/client/init.c

136 lines
2.7 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1994 Microsoft Corporation
Copyright (c) 1993 Micro Computer Systems, Inc.
Module Name:
net\svcdlls\nwsap\client\init.c
Abstract:
This routine initializes the SAP Library
Author:
Brian Walker (MCS) 06-15-1993
Revision History:
--*/
#include "precomp.h"
#pragma hdrstop
/** Global Variables **/
INT SapLibInitialized = 0;
HANDLE SapXsPortHandle;
/*++
*******************************************************************
S a p L i b I n i t
Routine Description:
This routine initializes the SAP interface for a program
Arguments:
None
Return Value:
0 = Ok
Else = Error
*******************************************************************
--*/
DWORD
SapLibInit(
VOID)
{
UNICODE_STRING unistring;
NTSTATUS status;
SECURITY_QUALITY_OF_SERVICE qos;
/** If already initialized - return ok **/
if (SapLibInitialized) {
return 0;
}
/** Connect the port **/
/** Fill out the security quality of service **/
qos.Length = sizeof(qos);
qos.ImpersonationLevel = SecurityImpersonation;
qos.ContextTrackingMode = SECURITY_DYNAMIC_TRACKING;
qos.EffectiveOnly = TRUE;
/** Setup the unicode string of the port name **/
RtlInitUnicodeString(&unistring, NWSAP_BIND_PORT_NAME_W);
/** Do the connect **/
status = NtConnectPort(
&SapXsPortHandle, /* We get a handle back */
&unistring, /* Port name to connect to */
&qos, /* Quality of service */
NULL, /* Client View */
NULL, /* Server View */
NULL, /* MaxMessageLength */
NULL, /* ConnectionInformation */
NULL); /* ConnectionInformationLength */
/** If error - just return it **/
if (!NT_SUCCESS(status))
return status;
/** All Done **/
SapLibInitialized = 1;
return 0;
}
/*++
*******************************************************************
S a p L i b S h u t d o w n
Routine Description:
This routine shuts down the SAP interface for a program
Arguments:
None
Return Value:
0 = Ok
Else = Error
*******************************************************************
--*/
DWORD
SapLibShutdown(
VOID)
{
/** If not initialized - leave **/
if (!SapLibInitialized)
return 0;
/** Close the port **/
NtClose(SapXsPortHandle);
/** All Done **/
SapLibInitialized = 0;
return 0;
}