;       SCCSID = @(#)vdmprop.inc	6.1 92/03/25
;***    vdmprop.inc - Common VDM properties definitions
;
;
;
;       Copyright (c) IBM Corporation 1987, 1992
;
;       All Rights Reserved
;
;       Title:
;           VDM Property definitions common to VDDs and applications
;

;***    Property Limits
;
;

MAX_PROPERTY_NAME_LENGTH        EQU     40  ;including NULL terminator


;***    VPTYPE: VDM Property Types
;
;
VDMP_BOOL       EQU     0   ;boolean
VDMP_INT        EQU     1   ;integer - ULONG size, but only USHORT is valid
VDMP_ENUM       EQU     2   ;enumeration
VDMP_STRING     EQU     3   ;asciiz string
VDMP_MLSTR      EQU     4   ;multi-line string, separated by linefeed (00ah)

DefType VPTYPE,USHORT                   ;property type



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


DefType VPORD,USHORT                    ;property ordinal



;***    VDHRegisterProperty Flags
;
;
VDMP_CREATE     EQU     000000001h  ;create-time only property
VDMP_ADVANCED   EQU     000000002h  ;advanced property (not shown by default)



;***    VDHRegisterProperty PFNVDHRP ordinals
;
;
VDHPROP_VALIDATE        EQU     000000000h ;validate parameter
VDHPROP_SET     EQU     000000001h ;set parameter



;***    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
;
DefStruc ,VPBOUND_s                     ;vpb
    USHORT  min    ;minimum allowed value
    USHORT  max    ;maximum allowed value
    USHORT  step   ;increment between values
EndStruc VPBOUND
DefType PVPBOUND,dd                     ;pvpb



;***    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.
;

DefStruc ,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
EndStruc VPINFO
DefType PVPINFO,dd



;***    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.inc)
;          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
;          ...
;

DefStruc ,_PROPERTYBUFFER                       ;propbuf
    ULONG   cb
    CHAR    achPropBuf
EndStruc PROPERTYBUFFER
DefType PPROPERTYBUFFER,dd                      ;ppropbuf

