400 lines
11 KiB
C
400 lines
11 KiB
C
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 1996 - 1999
|
|
//
|
|
// File: xom.h
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
/* <BANNER> */
|
|
|
|
#include <wtypes.h> // Including LARGE_INTEGERS [rajnath]
|
|
/*
|
|
** Header file for the X/OPEN Object Management (XOM) Interface and Package.
|
|
*/
|
|
|
|
#ifndef XOM_HEADER
|
|
#define XOM_HEADER
|
|
|
|
/* insure that all pointers are _far and that all interface APIs follow */
|
|
/* the PASCAL calling convention for 8088 to 80286 machines, and stdcall */
|
|
/* convention on 32-bit platforms. */
|
|
|
|
#if defined(M_I8086) || defined(M_I286)
|
|
# ifndef FAR
|
|
# define FAR _far
|
|
# endif
|
|
# ifndef NEAR
|
|
# define NEAR _near
|
|
# endif
|
|
# ifndef XOMAPI
|
|
# if defined(M_I286)
|
|
# define XOMAPI _far _pascal _loadds
|
|
# else
|
|
# define XOMAPI _far _pascal
|
|
# endif
|
|
# endif
|
|
#else
|
|
# ifdef FAR
|
|
# undef FAR
|
|
# endif
|
|
# define FAR
|
|
# ifdef NEAR
|
|
# undef NEAR
|
|
# endif
|
|
# define NEAR
|
|
#endif
|
|
|
|
#if defined(_M_IX86) && (_M_IX86 >= 300)
|
|
# define XOMAPI __stdcall
|
|
#endif
|
|
|
|
#if defined(_M_IA64)
|
|
# define XOMAPI __stdcall
|
|
#endif
|
|
|
|
#if defined(_M_AMD64)
|
|
# define XOMAPI
|
|
#endif
|
|
|
|
#pragma pack(1)
|
|
|
|
#if !defined(XOMAPI)
|
|
# error -- TARGET MACHINE TYPE NOT SUPPORTED --
|
|
#endif
|
|
|
|
/* $Workfile: XOM.H $ $Revision: 1.1 $ */
|
|
/* BEGIN SERVICE INTERFACE */
|
|
|
|
/* INTERMEDIATE DATA TYPES */
|
|
|
|
|
|
|
|
typedef short OM_sint;
|
|
typedef short OM_sint16;
|
|
typedef long int OM_sint32;
|
|
typedef short unsigned OM_uint;
|
|
typedef short unsigned OM_uint16;
|
|
typedef long unsigned OM_uint32;
|
|
|
|
|
|
typedef LARGE_INTEGER OM_sint64;
|
|
|
|
|
|
/* PRIMARY DATA TYPES */
|
|
|
|
/* Boolean */
|
|
|
|
typedef OM_uint32 OM_boolean;
|
|
|
|
/* Element Position */
|
|
|
|
typedef OM_uint32 OM_string_length;
|
|
|
|
/* Enumeration */
|
|
|
|
typedef OM_sint32 OM_enumeration;
|
|
|
|
/* Exclusions */
|
|
|
|
typedef OM_uint OM_exclusions;
|
|
|
|
/* Integer */
|
|
|
|
typedef OM_sint32 OM_integer;
|
|
|
|
/* Large Integer */
|
|
|
|
typedef OM_sint64 OM_i8;
|
|
|
|
/* DWORD_PTR */
|
|
|
|
typedef DWORD_PTR OM_dword_ptr;
|
|
|
|
/* Modification */
|
|
|
|
typedef OM_uint OM_modification;
|
|
|
|
/* Object */
|
|
|
|
typedef struct OM_descriptor_struct FAR *OM_object;
|
|
|
|
/* String */
|
|
|
|
#ifndef OM_STRING_DEFINED
|
|
#define OM_STRING_DEFINED
|
|
typedef struct {
|
|
OM_string_length length;
|
|
void FAR *elements;
|
|
} OM_string;
|
|
#endif
|
|
|
|
#define OM_STRING(string) \
|
|
{ (OM_string_length)(sizeof(string)-1), (string) }
|
|
|
|
/* Workspace */
|
|
|
|
typedef void FAR *OM_workspace;
|
|
|
|
/* SECONDARY DATA TYPES */
|
|
|
|
/* Object Identifier */
|
|
|
|
typedef OM_string OM_object_identifier;
|
|
|
|
/* Private Object */
|
|
|
|
typedef OM_object OM_private_object;
|
|
|
|
/* Public Object */
|
|
|
|
typedef OM_object OM_public_object;
|
|
|
|
/* Return Code */
|
|
|
|
typedef OM_uint OM_return_code;
|
|
|
|
/* Syntax */
|
|
|
|
typedef OM_uint16 OM_syntax;
|
|
|
|
/* Type */
|
|
|
|
typedef OM_uint16 OM_type;
|
|
|
|
/* Type List */
|
|
|
|
typedef OM_type FAR *OM_type_list;
|
|
|
|
/* Value */
|
|
|
|
typedef struct {
|
|
OM_uint32 padding;
|
|
OM_object object;
|
|
} OM_padded_object;
|
|
|
|
typedef union OM_value_union {
|
|
OM_string string;
|
|
OM_boolean boolean;
|
|
OM_enumeration enumeration;
|
|
OM_integer integer;
|
|
OM_padded_object object;
|
|
OM_i8 i8;
|
|
OM_dword_ptr dword_ptr;
|
|
} OM_value;
|
|
|
|
/* Value Length */
|
|
|
|
typedef OM_uint32 OM_value_length;
|
|
|
|
/* Value Position */
|
|
|
|
typedef OM_uint32 OM_value_position;
|
|
|
|
/* TERTIARY DATA TYPES */
|
|
|
|
/* Descriptor */
|
|
#include <pshpack4.h>
|
|
typedef struct OM_descriptor_struct {
|
|
OM_type type;
|
|
OM_syntax syntax;
|
|
union OM_value_union value;
|
|
} OM_descriptor;
|
|
#include <poppack.h>
|
|
|
|
/* SYMBOLIC CONSTANTS */
|
|
|
|
/* Boolean */
|
|
|
|
#define OM_FALSE ( (OM_boolean) 0 )
|
|
#define OM_TRUE ( (OM_boolean) 1 )
|
|
|
|
/* Element Position */
|
|
|
|
#define OM_LENGTH_UNSPECIFIED ( (OM_string_length) 0xFFFFFFFF )
|
|
|
|
/* Exclusions */
|
|
|
|
#define OM_NO_EXCLUSIONS ( (OM_exclusions) 0 )
|
|
#define OM_EXCLUDE_ALL_BUT_THESE_TYPES ( (OM_exclusions) 1 )
|
|
#define OM_EXCLUDE_ALL_BUT_THESE_VALUES ( (OM_exclusions) 2 )
|
|
#define OM_EXCLUDE_MULTIPLES ( (OM_exclusions) 4 )
|
|
#define OM_EXCLUDE_SUBOBJECTS ( (OM_exclusions) 8 )
|
|
#define OM_EXCLUDE_VALUES ( (OM_exclusions) 16 )
|
|
#define OM_EXCLUDE_DESCRIPTORS ( (OM_exclusions) 32 )
|
|
|
|
/* Modification */
|
|
|
|
#define OM_INSERT_AT_BEGINNING ( (OM_modification) 1 )
|
|
#define OM_INSERT_AT_CERTAIN_POINT ( (OM_modification) 2 )
|
|
#define OM_INSERT_AT_END ( (OM_modification) 3 )
|
|
#define OM_REPLACE_ALL ( (OM_modification) 4 )
|
|
#define OM_REPLACE_CERTAIN_VALUES ( (OM_modification) 5 )
|
|
|
|
/* Object Identifiers */
|
|
|
|
/* NOTE: These macros rely on the ## token-pasting operator of ANSI C.
|
|
* On many pre-ANSI compilers the same effect can be obtained by
|
|
* replacing ## with /**/
|
|
|
|
/* Private macro to calculate length of an object identifier
|
|
*/
|
|
#define OMP_LENGTH(oid_string) (sizeof(OMP_O_##oid_string)-1)
|
|
|
|
|
|
/* Macro to initialise the syntax and value of an object identifier
|
|
*/
|
|
#define OM_OID_DESC(type, oid_name) \
|
|
{ (type), OM_S_OBJECT_IDENTIFIER_STRING, \
|
|
{ { OMP_LENGTH(oid_name) , OMP_D_##oid_name } } }
|
|
|
|
|
|
/* Macro to mark the end of a public object
|
|
*/
|
|
#define OM_NULL_DESCRIPTOR \
|
|
{ OM_NO_MORE_TYPES, OM_S_NO_MORE_SYNTAXES, \
|
|
{ 0, OM_ELEMENTS_UNSPECIFIED } }
|
|
|
|
|
|
/* Macro to make class constants available within a compilation unit
|
|
*/
|
|
#define OM_IMPORT(class_name) \
|
|
extern char FAR OMP_D_##class_name[] ; \
|
|
extern OM_string FAR class_name;
|
|
|
|
|
|
/* Macro to allocate memory for class constants within a compilation unit
|
|
*/
|
|
#define OM_EXPORT(class_name) \
|
|
char FAR OMP_D_##class_name[] = OMP_O_##class_name ; \
|
|
OM_string FAR class_name = \
|
|
{ OMP_LENGTH(class_name), OMP_D_##class_name } ;
|
|
|
|
|
|
/* Constant for the OM package
|
|
*/
|
|
#define OMP_O_OM_OM "\126\006\001\002\004"
|
|
|
|
/* Constant for the Encoding class
|
|
*/
|
|
#define OMP_O_OM_C_ENCODING "\126\006\001\002\004\001"
|
|
|
|
/* Constant for the External class
|
|
*/
|
|
#define OMP_O_OM_C_EXTERNAL "\126\006\001\002\004\002"
|
|
|
|
/* Constant for the Object class
|
|
*/
|
|
#define OMP_O_OM_C_OBJECT "\126\006\001\002\004\003"
|
|
|
|
/* Constant for the BER Object Identifier
|
|
*/
|
|
#define OMP_O_OM_BER "\121\001"
|
|
|
|
/* Constant for the Canonical-BER Object Identifier
|
|
*/
|
|
#define OMP_O_OM_CANONICAL_BER "\126\006\001\002\005"
|
|
|
|
/* Return Code */
|
|
|
|
#define OM_SUCCESS ( (OM_return_code) 0 )
|
|
#define OM_ENCODING_INVALID ( (OM_return_code) 1 )
|
|
#define OM_FUNCTION_DECLINED ( (OM_return_code) 2 )
|
|
#define OM_FUNCTION_INTERRUPTED ( (OM_return_code) 3 )
|
|
#define OM_MEMORY_INSUFFICIENT ( (OM_return_code) 4 )
|
|
#define OM_NETWORK_ERROR ( (OM_return_code) 5 )
|
|
#define OM_NO_SUCH_CLASS ( (OM_return_code) 6 )
|
|
#define OM_NO_SUCH_EXCLUSION ( (OM_return_code) 7 )
|
|
#define OM_NO_SUCH_MODIFICATION ( (OM_return_code) 8 )
|
|
#define OM_NO_SUCH_OBJECT ( (OM_return_code) 9 )
|
|
#define OM_NO_SUCH_RULES ( (OM_return_code) 10 )
|
|
#define OM_NO_SUCH_SYNTAX ( (OM_return_code) 11 )
|
|
#define OM_NO_SUCH_TYPE ( (OM_return_code) 12 )
|
|
#define OM_NO_SUCH_WORKSPACE ( (OM_return_code) 13 )
|
|
#define OM_NOT_AN_ENCODING ( (OM_return_code) 14 )
|
|
#define OM_NOT_CONCRETE ( (OM_return_code) 15 )
|
|
#define OM_NOT_PRESENT ( (OM_return_code) 16 )
|
|
#define OM_NOT_PRIVATE ( (OM_return_code) 17 )
|
|
#define OM_NOT_THE_SERVICES ( (OM_return_code) 18 )
|
|
#define OM_PERMANENT_ERROR ( (OM_return_code) 19 )
|
|
#define OM_POINTER_INVALID ( (OM_return_code) 20 )
|
|
#define OM_SYSTEM_ERROR ( (OM_return_code) 21 )
|
|
#define OM_TEMPORARY_ERROR ( (OM_return_code) 22 )
|
|
#define OM_TOO_MANY_VALUES ( (OM_return_code) 23 )
|
|
#define OM_VALUES_NOT_ADJACENT ( (OM_return_code) 24 )
|
|
#define OM_WRONG_VALUE_LENGTH ( (OM_return_code) 25 )
|
|
#define OM_WRONG_VALUE_MAKEUP ( (OM_return_code) 26 )
|
|
#define OM_WRONG_VALUE_NUMBER ( (OM_return_code) 27 )
|
|
#define OM_WRONG_VALUE_POSITION ( (OM_return_code) 28 )
|
|
#define OM_WRONG_VALUE_SYNTAX ( (OM_return_code) 29 )
|
|
#define OM_WRONG_VALUE_TYPE ( (OM_return_code) 30 )
|
|
|
|
/* String (Elements component) */
|
|
|
|
#define OM_ELEMENTS_UNSPECIFIED ( (void *) 0 )
|
|
|
|
/* Syntax */
|
|
|
|
#define OM_S_NO_MORE_SYNTAXES ( (OM_syntax) 0 )
|
|
#define OM_S_BIT_STRING ( (OM_syntax) 3 )
|
|
#define OM_S_BOOLEAN ( (OM_syntax) 1 )
|
|
#define OM_S_ENCODING_STRING ( (OM_syntax) 8 )
|
|
#define OM_S_ENUMERATION ( (OM_syntax) 10 )
|
|
#define OM_S_GENERAL_STRING ( (OM_syntax) 27 )
|
|
#define OM_S_GENERALISED_TIME_STRING ( (OM_syntax) 24 )
|
|
#define OM_S_GRAPHIC_STRING ( (OM_syntax) 25 )
|
|
#define OM_S_IA5_STRING ( (OM_syntax) 22 )
|
|
#define OM_S_INTEGER ( (OM_syntax) 2 )
|
|
#define OM_S_NULL ( (OM_syntax) 5 )
|
|
#define OM_S_NUMERIC_STRING ( (OM_syntax) 18 )
|
|
#define OM_S_OBJECT ( (OM_syntax) 127 )
|
|
#define OM_S_OBJECT_DESCRIPTOR_STRING ( (OM_syntax) 7 )
|
|
#define OM_S_OBJECT_IDENTIFIER_STRING ( (OM_syntax) 6 )
|
|
#define OM_S_OCTET_STRING ( (OM_syntax) 4 )
|
|
#define OM_S_PRINTABLE_STRING ( (OM_syntax) 19 )
|
|
#define OM_S_TELETEX_STRING ( (OM_syntax) 20 )
|
|
#define OM_S_UTC_TIME_STRING ( (OM_syntax) 23 )
|
|
#define OM_S_VIDEOTEX_STRING ( (OM_syntax) 21 )
|
|
#define OM_S_VISIBLE_STRING ( (OM_syntax) 26 )
|
|
#define OM_S_UNICODE_STRING ( (OM_syntax) 64 )
|
|
#define OM_S_I8 ( (OM_syntax) 65 )
|
|
#define OM_S_OBJECT_SECURITY_DESCRIPTOR ( (OM_syntax) 66 )
|
|
#define OM_S_LONG_STRING ((OM_syntax) 0x8000)
|
|
#define OM_S_NO_VALUE ((OM_syntax) 0x4000)
|
|
#define OM_S_LOCAL_STRING ((OM_syntax) 0x2000)
|
|
#define OM_S_SERVICE_GENERATED ((OM_syntax) 0x1000)
|
|
#define OM_S_PRIVATE ((OM_syntax) 0x0800)
|
|
#define OM_S_SYNTAX ((OM_syntax) 0x03FF)
|
|
|
|
/* Type */
|
|
|
|
#define OM_NO_MORE_TYPES ( (OM_type) 0 )
|
|
#define OM_ARBITRARY_ENCODING ( (OM_type) 1 )
|
|
#define OM_ASN1_ENCODING ( (OM_type) 2 )
|
|
#define OM_CLASS ( (OM_type) 3 )
|
|
#define OM_DATA_VALUE_DESCRIPTOR ( (OM_type) 4 )
|
|
#define OM_DIRECT_REFERENCE ( (OM_type) 5 )
|
|
#define OM_INDIRECT_REFERENCE ( (OM_type) 6 )
|
|
#define OM_OBJECT_CLASS ( (OM_type) 7 )
|
|
#define OM_OBJECT_ENCODING ( (OM_type) 8 )
|
|
#define OM_OCTET_ALIGNED_ENCODING ( (OM_type) 9 )
|
|
#define OM_PRIVATE_OBJECT ( (OM_type) 10 )
|
|
#define OM_RULES ( (OM_type) 11 )
|
|
|
|
/* Value Position */
|
|
|
|
#define OM_ALL_VALUES ( (OM_value_position) 0xFFFFFFFF)
|
|
|
|
|
|
/* WORKSPACE INTERFACE */
|
|
|
|
#include <xomi.h>
|
|
|
|
#pragma pack()
|
|
|
|
/* END SERVICE INTERFACE */
|
|
|
|
#endif /* XOM_HEADER */
|