en:docs:fapi:doserror

This is part of Family API which allow to create dual-os version of program runs under OS/2 and DOS

Note: This is legacy API call. It is recommended to use 32-bit equivalent

2021/09/17 04:47 · prokushev · 0 Comments
2021/08/20 03:18 · prokushev · 0 Comments

DosError

This call allows an OS/2 process to receive hard error notification without generating a hard error signal.

Syntax

DosError (Flag)

Parameters

  • Flags (USHORT) - input : Bit field, defined in the following example (the unused high-order bits are reserved and must be set to zero).

^ Bit ^ Description ^

15-2 Reserved, set to zero
1 0 = Enable exception popups. 1 = Disable exception popups
0 0 = Disable hard error popups (fail requests). 1 = Enable hard error popups

Return Code

rc (USHORT) - return

Return code descriptions are:

  • 0 NO_ERROR
  • 87 ERROR_INVALID_PARAMETER

Remarks

DosError allows an OS/2 process to disable user notification if a program (or untrapped numeric processor) exception occurs. If end user notification is disabled, and if one of these exceptions occurs, the process is terminated.

Hard errors generated under a process that has issued a DosError call are failed, and the appropriate error code is returned. The default situation is both hard error pop-ups and exception pop-ups are enabled, if DosError is not issued.

Family API Considerations

Some options operate differently in the DOS mode than in the OS/2 mode. Therefore, the following restriction applies to DosError when coding for the DOS mode:

For Flag, a value of 0000 causes all subsequent INT 24s to be failed until a subsequent call with a value of 1 is issued.

Note: Since INT 24 is not issued in DOS mode, this call has no effect when running in DOS mode.

Bindings

C Binding

#define INCL_DOSMISC
 
USHORT  rc = DosError(Flag);
USHORT  Flags;        /* Action flags */
 
USHORT  rc;            /* return code */

MASM Binding

EXTRN  DosError:FAR
INCL_DOSMISC   EQU 1
 
PUSH   WORD    Flags    ;Action flags
CALL   DosError
 
Returns WORD

Example Code

This example disables hard error popups and exception popups, then re-enables them.

#define INCL_DOSQUEUES
 
#define ENABLE_EXCEPTION 0
#define DISABLE_EXCEPTION 2
#define ENABLE_HARDERROR 1
#define DISABLE_HARDERROR 0
#define DISABLE_ERRORPOPUPS DISABLE_EXCEPTION | DISABLE_HARDERROR
#define ENABLE_ERRORPOPUPS ENABLE_EXCEPTION | ENABLE_HARDERROR
 
USHORT rc;
 
 rc = DosError(DISABLE_ERRORPOPUPS); /* Action flag */
 rc = DosError(ENABLE_ERRORPOPUPS);  /* Action flag */

Note