windows-nt/Source/XPSP1/NT/ds/security/gina/policy/inc/sec32api.h

174 lines
4.6 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*****************************************************************/
/** Microsoft Windows **/
/** Copyright (C) Microsoft Corp., 1993-5 **/
/*****************************************************************/
/*
SEC32API.H
This header file contains declarations for the internal versions
of the 32-bit Access API, as exported by FILESEC.386. It also
contains constant definitions used by securty components
This file relies, in part, on NETVXD.H and VXDCALL.H.
This file must be H2INC-able.
FILE HISTORY:
dannygl 09/25/93 Initial version
dannygl 09/29/93 Add NetAccessSetInfo
dannygl 10/04/93 Add security-related string constants
dannygl 01/17/94 Replace Win32 services with IOCtls
dannygl 02/10/94 Add NetAccess arg count constants
dannygl 02/16/94 Update registry string constants
dannygl 11/17/94 Add Logon2 API (supported by MSSP only)
*/
// Registry string constants
// Security provider information (in HKEY_LOCAL_MACHINE)
#define REGKEY_SP_CONFIG "Security\\Provider"
#define REGVAL_SP_PLATFORM "Platform_Type"
#define REGVAL_SP_CONTAINER "Container"
#define REGVAL_SP_ABSERVER "Address_Server"
#define REGVAL_SP_ONEOFFABSERVER "One_Off_Address_Server"
#define REGVAL_SP_ABPROVIDER "Address_Book"
#define REGVAL_SP_NO_SORT "NoSort"
// Obsolescent definition -- will be deleted soon
//#define REGVAL_SP_PTPROVIDER "Pass_Through"
// Definitions for the IOControl interface that FILESEC uses for Win32 API
// support
#define FSIOC_API_Base 100
/*XLATOFF*/
typedef enum
{
FSIOC_AccessAddAPI = FSIOC_API_Base,
FSIOC_AccessCheckAPI,
FSIOC_AccessDelAPI,
FSIOC_AccessEnumAPI,
FSIOC_AccessGetInfoAPI,
FSIOC_AccessGetUserPermsAPI,
FSIOC_AccessSetInfoAPI
} FSIOC_Ordinal;
/*XLATON*/
// Important: We define this constant separately because we need it
// to be H2INC'able. It must match the above enumerated type.
#define FSIOC_API_Count 7
// Arg counts for Access functions
//
// Note: These constants are defined for readability purposes and should not
// be modified independently.
#define Argc_AccessAdd 3
#define Argc_AccessCheck 4
#define Argc_AccessDel 1
#define Argc_AccessEnum 7
#define Argc_AccessGetInfo 5
#define Argc_AccessGetUserPerms 3
#define Argc_AccessSetInfo 5
// Definitions used by the Security Provider VxDs to expose interfaces
// to Win32 code via IOCtls
#define SPIOC_API_Base 100
/*XLATOFF*/
typedef enum
{
SPIOC_PreLogonAPI = SPIOC_API_Base,
SPIOC_LogonAPI,
SPIOC_LogoffAPI,
SPIOC_GetFlagsAPI,
SPIOC_GetContainerAPI,
SPIOC_NW_GetUserObjectId, // NWSP only
SPIOC_Logon2API, // Currently MSSP only
SPIOC_DiscoverDC // MSSP only
} SPIOC_Ordinal;
/*XLATON*/
// Important: We define this constant separately because we need it
// to be H2INC'able. It must match the above enumerated type.
#define SPIOC_API_Count 8
/*XLATOFF*/
typedef struct
{
unsigned char *pbChallenge;
unsigned long *pcbChallenge;
} AUTHPRELOGONINFO, *PAUTHPRELOGONINFO;
typedef struct
{
const char *pszContainer;
const char *pszUserName;
const char *pszClientName;
const unsigned char *pbResponse;
unsigned long cbResponse;
const unsigned char *pbChallenge;
unsigned long cbChallenge;
unsigned long fResponseType;
unsigned long *pfResult;
} AUTHLOGONINFO, *PAUTHLOGONINFO;
typedef struct
{
const char *pszContainer;
char *pszContainerValidated;
const char *pszUserName;
char *pszUserValidated;
const char *pszClientName;
const unsigned char *pbResponse;
unsigned long cbResponse;
const unsigned char *pbResponse2;
unsigned long cbResponse2;
const unsigned char *pbChallenge;
unsigned long cbChallenge;
unsigned long *pfFlags;
unsigned long *pfResult;
} AUTHLOGON2INFO, *PAUTHLOGON2INFO;
typedef struct
{
const char *pszContainer;
const char *pszUserName;
const char *pszClientName;
} AUTHLOGOFFINFO, *PAUTHLOGOFFINFO;
typedef struct
{
unsigned long *pdwFlags;
unsigned long *pdwSecurity;
} AUTHGETFLAGS, *PAUTHGETFLAGS;
typedef struct
{
char *pszContainer;
unsigned long *pcbContainer;
} AUTHGETCONTAINER, *PAUTHGETCONTAINER;
typedef struct
{
char *pszUserName;
unsigned long dwObjectId;
} AUTHNWGETUSEROBJECTID, *PAUTHNWGETUSEROBJECTID;
typedef struct
{
const char *pszDomain;
char *pszDCs; // Concatenated strings, ended with an extra null
unsigned long *pcbDCs;
} AUTHDISCOVERDC, *PAUTHDISCOVERDC;
/*XLATON*/