Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

221 lines
5.0 KiB

/*****************************************************************************/
/** Microsoft LAN Manager **/
/** Copyright(c) Microsoft Corp., 1987-1990 **/
/*****************************************************************************/
/*****************************************************************************
File : usectxt.cxx
Title : use context analysis
History :
24-Aug-1991 VibhasC Created
*****************************************************************************/
/****************************************************************************
includes
****************************************************************************/
#include "nulldefs.h"
extern "C" {
#include <stdio.h>
#include <assert.h>
#include <string.h>
}
#include "common.hxx"
#include "baduse.hxx"
/****************************************************************************
local defines
****************************************************************************/
#define SET_BAD_CON_REASON(bA,b) ( bA[ b/32UL ] |= (1UL << (b % 32UL)) )
#define HAS_BAD_CON_REASON(bA,b) ( bA[ b/32UL ] & (1UL << (b % 32UL)) )
#define RESET_BAD_CON_REASON(bA,b) ( bA[ b/32UL ] &= ~(1UL << (b % 32UL)) )
#define SET_NON_RPC_REASON(nA,n) ( nA[ n/32UL ] |= (1UL << (n % 32UL)) )
#define HAS_NON_RPC_REASON(nA,n) ( nA[ n/32UL ] & (1UL << (n % 32UL)) )
#define RESET_NON_RPC_REASON(nA,n) ( nA[ n/32UL ] &= ~(1UL << (n % 32UL)) )
/****************************************************************************
extern procedures
****************************************************************************/
/****************************************************************************
extern data
****************************************************************************/
/****************************************************************************/
/****************************************************************************
CTXTMGR procedures
****************************************************************************/
BadUseInfo::BadUseInfo()
{
InitBadUseInfo();
}
void
BadUseInfo::InitBadUseInfo()
{
int i;
for( i = 0; i < SIZE_BAD_CON_REASON_ARRAY; ++i )
{
AllBadConstructReasons[ i ] = 0L;
}
for( i = 0; i < SIZE_NON_RPC_REASON_ARRAY; ++i )
{
AllNonRPCAbleReasons[ i ] = 0L;
}
NoOfArmsWithCaseLabels = 0;
}
BOOL
BadUseInfo::BadConstructBecause(
BAD_CONSTRUCT BadReason )
{
if( HAS_BAD_CON_REASON( AllBadConstructReasons , BadReason ) )
return TRUE;
return FALSE;
}
BOOL
BadUseInfo::NonRPCAbleBecause(
NON_RPCABLE NReason )
{
if( HAS_NON_RPC_REASON( AllNonRPCAbleReasons , NReason ) )
return TRUE;
return FALSE;
}
void
BadUseInfo::SetBadConstructBecause(
BAD_CONSTRUCT BadReason )
{
SET_BAD_CON_REASON( AllBadConstructReasons, BadReason);
}
void
BadUseInfo::ResetBadConstructBecause(
BAD_CONSTRUCT BadReason )
{
RESET_BAD_CON_REASON( AllBadConstructReasons, BadReason);
}
void
BadUseInfo::SetNonRPCAbleBecause(
NON_RPCABLE NReason )
{
SET_NON_RPC_REASON( AllNonRPCAbleReasons, NReason);
}
void
BadUseInfo::ResetNonRPCAbleBecause(
NON_RPCABLE NReason )
{
RESET_NON_RPC_REASON( AllNonRPCAbleReasons, NReason);
}
BOOL
BadUseInfo::AnyReasonForBadConstruct()
{
int i;
BAD_CONSTRUCT b = 0;
for( i = 0; i < SIZE_BAD_CON_REASON_ARRAY; ++i )
b |= AllBadConstructReasons[ i ];
return ( b != 0 );
}
BOOL
BadUseInfo::AnyReasonForNonRPCAble()
{
int i;
NON_RPCABLE b = 0;
for( i = 0; i < SIZE_NON_RPC_REASON_ARRAY; ++i )
b |= AllNonRPCAbleReasons[ i ];
return ( b != 0 );
}
BOOL
BadUseInfo::HasAnyHandleSpecification()
{
if( NonRPCAbleBecause( NR_PRIMITIVE_HANDLE ) ||
NonRPCAbleBecause( NR_PTR_TO_PRIMITIVE_HANDLE ) ||
NonRPCAbleBecause( NR_GENERIC_HANDLE ) ||
NonRPCAbleBecause( NR_PTR_TO_GENERIC_HANDLE ) ||
NonRPCAbleBecause( NR_CTXT_HDL ) ||
NonRPCAbleBecause( NR_PTR_TO_CTXT_HDL ) )
{
return TRUE;
}
return FALSE;
}
void
BadUseInfo::ResetAllHdlSpecifications()
{
ResetNonRPCAbleBecause( NR_PRIMITIVE_HANDLE );
ResetNonRPCAbleBecause( NR_PTR_TO_PRIMITIVE_HANDLE );
ResetNonRPCAbleBecause( NR_GENERIC_HANDLE );
ResetNonRPCAbleBecause( NR_PTR_TO_GENERIC_HANDLE );
ResetNonRPCAbleBecause( NR_CTXT_HDL );
ResetNonRPCAbleBecause( NR_PTR_TO_CTXT_HDL );
ResetNonRPCAbleBecause( NR_PTR_TO_PTR_TO_CTXT_HDL );
}
void
CopyAllBadUseReasons(
BadUseInfo * pDest,
BadUseInfo * pSrc )
{
CopyAllBadConstructReasons( pDest, pSrc );
CopyAllNonRPCAbleReasons( pDest, pSrc );
}
void
CopyAllBadConstructReasons(
BadUseInfo * pDest,
BadUseInfo * pSrc )
{
int i;
for( i = 0; i < SIZE_BAD_CON_REASON_ARRAY; ++i )
pDest->AllBadConstructReasons[i] |= pSrc->AllBadConstructReasons[i];
}
void
CopyAllNonRPCAbleReasons(
BadUseInfo * pDest,
BadUseInfo * pSrc )
{
int i;
for( i = 0; i < SIZE_NON_RPC_REASON_ARRAY; ++i )
pDest->AllNonRPCAbleReasons[i] |= pSrc->AllNonRPCAbleReasons[i];
}
void
CopyNoOfArmsWithCaseLabels(
BadUseInfo * pDest,
BadUseInfo * pSrc )
{
pDest->NoOfArmsWithCaseLabels += pSrc->NoOfArmsWithCaseLabels;
}