en:ibm:ifs:helpers:criterror

FSH_CRITERROR

Purpose

This function signals a hard error to the daemon.

Calling Sequence

int far pascal FSH_CRITERROR(cbMessage, pMessage, nSubs, pSubs, fAllowed)
 
unsigned short cbMessage;
char far * pMessage;
unsigned short nSubs;
char far * pSubs;
unsigned short fAllowed;

Where

cbMessage is the length of the message template.

pMessage is the pointer to the message template.

This may contain replaceable parameters in the format used by the message retriever.

nSubs is the number of replaceable parameters.

pSubs is the pointer to the replacement text.

The replacement text is a packed set of ASCIIZ strings.

fAllowed is the bit mask of allowed actions:

Bit 0x0001 on indicates FAIL allowed
Bit 0x0002 on indicates ABORT allowed
Bit 0x0004 on indicates RETRY allowed
Bit 0x0008 on indicates IGNORE allowed
Bit 0x0010 on indicates ACKNOWLEDGE only allowed.

All other bits are reserved and must be zero. If bit 0x0010 is set, and any or some of bits 0x0001 to 0x0008 are also set, bit 0x0010 will be ignored.

Returns

This function returns the action to be taken:

0x0000 - ignore
0x0001 - retry
0x0003 - fail
0x0004 - continue

Remarks

If the user responds with an action that is not allowed, it is treated as FAIL. If FAIL is not allowed, it is treated as ABORT. ABORT is always allowed.

When ABORT is the final action, OS/2 does not return this as an indicator; it returns a FAIL. The actual ABORT operation is generated when this thread of execution is about to return to user code.

The maximum length of the template is 128 bytes, including the NUL. The maximum length of the message with text substitutions is 512 bytes. The maximum number of substitutions is 9.

If any action other than retry is selected for a given hard error popup, then any subsequent popups (within the same API call) will be automatically failed; a popup will not be done. This means that (except for retries) there can be at most one hard error popup per call to the FSD. And, if the kernel generates a popup, then the FSD cannot create one.

FSH_CRITERROR will fail automatically if the user application has set autofail, or if a previous hard error has occurred.

FSH_CRITERROR may block.

Note: OS/2 does not validate input parameters. Therefore, an FSD should call FSH_PROBEBUF where appropriate.