136 lines
2.7 KiB
C
136 lines
2.7 KiB
C
/*++
|
||
|
||
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;
|
||
}
|
||
|