Metropoli BBS
VIEWER: vdmprop.h MODE: TEXT (ASCII)
/***    vdmprop.h - Common VDM properties definitions
 *
 *      Title:
 *          VDM Property definitions common to VDDs and applications
 */


/***ET+ Property Limits
 *
 */

#define MAX_PROPERTY_NAME_LENGTH    40  /*  including NULL terminator */


/***ET+ VPTYPE: VDM Property Types
 *
 */
#define VDMP_BOOL       0   /*  boolean */
#define VDMP_INT        1   /*  integer - ULONG size, but only USHORT is valid */
#define VDMP_ENUM       2   /*  enumeration */
#define VDMP_STRING     3   /*  asciiz string */
#define VDMP_MLSTR      4   /*  multi-line string, separated by linefeed (0x0a) */

typedef USHORT   VPTYPE;                                /*  property type */
/*end*/


/***ET+ VPORD: VDM Property Ordinals
 *
 */
#define VDMP_ORD_OTHER      0   /*  custom VDD property */
#define VDMP_ORD_KERNEL     1   /*  asciiz path of DOS kernel */
#define VDMP_ORD_SHELL      2   /*  asciiz path of DOS shell */
#define VDMP_ORD_RMSIZE     3   /*  integer size of DOS box (128K..640K) */
#define VDMP_ORD_FCB        4   /*  integer total FCBs */
#define VDMP_ORD_FCB2       5   /*  integer FCBs immune to close LRUing */
#define VDMP_ORD_BREAK      6   /*  boolean BREAK flag */
#define VDMP_ORD_DOSDD      7   /*  mlstr DOS device drivers */
#define VDMP_ORD_VMBOOT     8   /*  mlstr virtual machine boot drive(s) */
/*  #define VDMP_ORD_IOPL3      9   // boolean IOPL3 flag              // 6.10 */
#define VDMP_ORD_VERSION    10  /*  mlstr fake version entries */
#define VDMP_ORD_DOS_UMB    11  /*  boolean flag - DOS owns UBMs       BN001*/ 
#define VDMP_ORD_DOS_HIGH   12  /*  boolean flag - DOS loaded high     BN002 */
#define VDMP_ORD_LASTDRIVE  13  /*  asciiz lastdrive                   BN003 */
#define VDMP_ORD_FILES      14  /*  integer total FILES                BN011 */


typedef USHORT   VPORD;                                 /*  property ordinal */
/*end*/


/***ET+ VDHRegisterProperty Flags
 *
 */
#define VDMP_CREATE         0x00000001  /*  create-time only property */
#define VDMP_ADVANCED       0x00000002  /*  advanced property (not shown by default) */
/*end*/


/***ET+ VDHRegisterProperty PFNVDHRP ordinals
 *
 */
#define VDHPROP_VALIDATE    0x00000000L /*  validate parameter */
#define VDHPROP_SET         0x00000001L /*  set parameter */
/*end*/


/***ET+ VPBOUND - limits for VDMP_INT properties
 *
 *  Notes:  (1) max > min must hold
 *          (2) (max-min) must be a multiple of step
 *          (3) step = 1 implies that all values between min and max are valid
 */
typedef struct VPBOUND_s { /*  vpb */
    USHORT  min;    /*  minimum allowed value */
    USHORT  max;    /*  maximum allowed value */
    USHORT  step;   /*  increment between values */
} VPBOUND;
typedef VPBOUND *PVPBOUND; /*  pvpb */
/*end*/


/***ET+ VPINFO - VDD Property Info structure
 *
 *      This is filled in by a call to Dos32QueryDOSProperty
 *
 *
 *      VPTYPE  vi_vptype  - Property type (see VPTYPE).
 *      VPORD   vi_vpord   - Property ordinal (see VPORD).
 *      ULONG   vi_ulFlags - Property flags:
 *                  VDMP_CREATE
 *                    TRUE if the property can only be specified at
 *                        VDM creation.  Changing the property after
 *                        the VDM is created has no effect.
 *                    FALSE if the property can be specified at VDM
 *                        creation AND can be changed for a running
 *                        VDM.
 *      ULONG   vi_ulHelpID - ID of help topic
 *      char    vi_pszHelp[] - asciiz help file name.
 *                  A single NULL byte is present if no help is
 *                  available.
 *
 *      ???     vi_pvValid - This contains information that allows the property
 *                  value to be validated.  Its format depends upon
 *                  the property type:
 *                    VDMP_BOOL
 *                      This field is not present.
 *                    VDMP_INT
 *                      This field is a VPBOUND structure.
 *                    VDMP_ENUM
 *                      This field is a set of ASCIIZ strings,
 *                      terminated by a zero byte, which is the allowed
 *                      set of responses.
 *                    VDMP_STRING
 *                    VDMP_MLSTR
 *                      This field is a ULONG representing the maximum
 *                      allowed string length, including the terminating
 *                      NULL byte.
 *
 *      ???     vi_pvValue - The default value of the property.  In all cases
 *                  it is assumed that this value is valid according
 *                  to the constraints specified by pvValid.
 *                  The format depends upon the property type:
 *                    VDMP_BOOL
 *                      This field is a 4-byte BOOL.
 *                    VDMP_INT
 *                      This field is a ULONG.  The high half of the
 *                      value is always zero, so this type can only
 *                      take on the values of a USHORT.
 *                    VDMP_ENUM
 *                      This field is an ASCIIZ string.
 *                    VDMP_STRING
 *                    VDMP_MLSTR
 *                      This field is an ASCIIZ string.
 */

typedef struct VPINFO_s { /*  vpinfo */
    VPTYPE  vi_vptype;     /*  property type */
    VPORD   vi_vpord;      /*  property ordinal */
    ULONG   vi_ulFlags;    /*  flags */
    ULONG   vi_ulHelpID;   /*  help topic id */
    /*       vi_pszHelp[];   help file */
    /*       vi_pvValid;     validation information */
    /*      vi_pvValue;     default value	  */
} VPINFO;
typedef VPINFO *PVPINFO;
/*end*/


/***ET+ PROPERTYBUFFER - buffer containing 0 or more property values
 *
 *      This buffer format is used when passing property values to
 *      DosStartSession.
 *
 *      Byte
 *      Offset  Type    Contents
 *      ------  ------- ------------------------------------------
 *         0    ULONG   Buffer length, including this ULONG.
 *         4    VPTYPE  Type of property (see VPTYPE in vdmprop.h)
 *         6    ASCIIZ  Null-terminated property name
 *         ?    ?       Property value.  Format depends on VPTYPE:
 *                        VDMP_BOOL
 *                          4-byte boolean value.  0 => false, !0 => true.
 *                        VDMP_INT
 *                          ULONG.  The high half of the value is always
 *                            zero, so this type can only take on the
 *                            values of a USHORT.
 *                        VDMP_ENUM
 *                        VDMP_STRING
 *                        VDMP_MLSTR
 *                          Null-terminated string.
 *         ?    VPTYPE  Type of second property
 *         ?+2  ASCIIZ  Name of second property
 *         ?    ?       Value of second property
 *         ...
 */

typedef struct _PROPERTYBUFFER { /* propbuf */
    ULONG   cb;
    CHAR    achPropBuf;
} PROPERTYBUFFER;
typedef PROPERTYBUFFER *PPROPERTYBUFFER; /* ppropbuf */
/*end*/
[ RETURN TO DIRECTORY ]