DosEnterMustComplete: Difference between revisions
Appearance
m Martini moved page OS2 API:CPI:DosEnterMustComplete to DosEnterMustComplete |
mNo edit summary |
||
Line 1: | Line 1: | ||
Provides entry into a section of code in which asynchronous exceptions are held. | Provides entry into a section of code in which asynchronous exceptions are held. | ||
Line 11: | Line 10: | ||
ulrc = DosEnterMustComplete(pulNesting); | ulrc = DosEnterMustComplete(pulNesting); | ||
</PRE> | |||
==Parameters== | ==Parameters== | ||
; | ;pulNesting (PULONG) - output : A pointer to a value that is equal to the number of DosEnterMustComplete requests minus the number of DosExitMustComplete requests for the current thread. | ||
==Return Code== | ==Return Code== | ||
ulrc (APIRET) - returns | ulrc (APIRET) - returns | ||
DosEnterMustComplete returns one of the following values: | DosEnterMustComplete returns one of the following values: | ||
* 0 NO_ERROR | |||
* 0 | * 650 ERROR_NESTING_TOO_DEEP | ||
* 650 | |||
==Remarks== | ==Remarks== | ||
Line 27: | Line 25: | ||
DosEnterMustComplete notifies the system that the thread is entering a section of code in which asynchronous exceptions (signals and asynchronous process terminations) are to be held, rather than being immediately delivered to the thread. | DosEnterMustComplete notifies the system that the thread is entering a section of code in which asynchronous exceptions (signals and asynchronous process terminations) are to be held, rather than being immediately delivered to the thread. | ||
==Example Code== | ==Example Code== | ||
Line 65: | Line 62: | ||
return NO_ERROR; | return NO_ERROR; | ||
} | } | ||
</PRE> | |||
==Related Functions== | ==Related Functions== | ||
* [[ | * [[DosAcknowledgeSignalException]] | ||
* [[ | * [[DosExitMustComplete]] | ||
* [[ | * [[DosRaiseException]] | ||
* [[ | * [[DosSendSignalException]] | ||
* [[ | * [[DosSetExceptionHandler]] | ||
* [[ | * [[DosSetSignalExceptionFocus]] | ||
* [[ | * [[DosUnsetExceptionHandler]] | ||
* [[ | * [[DosUnwindException]] | ||
[[Category: | [[Category:Dos]] |
Revision as of 04:38, 6 January 2017
Provides entry into a section of code in which asynchronous exceptions are held.
Syntax
#define INCL_DOSEXCEPTIONS #include <os2.h> PULONG pulNesting; /* A pointer to a value that is equal to the number of DosEnterMustComplete requests minus the number of DosExitMustComplete requests for the current thread. */ APIRET ulrc; /* Return Code. */ ulrc = DosEnterMustComplete(pulNesting);
Parameters
- pulNesting (PULONG) - output
- A pointer to a value that is equal to the number of DosEnterMustComplete requests minus the number of DosExitMustComplete requests for the current thread.
Return Code
ulrc (APIRET) - returns
DosEnterMustComplete returns one of the following values:
- 0 NO_ERROR
- 650 ERROR_NESTING_TOO_DEEP
Remarks
Note: Do not make Presentation Manager calls from exception handlers.
DosEnterMustComplete notifies the system that the thread is entering a section of code in which asynchronous exceptions (signals and asynchronous process terminations) are to be held, rather than being immediately delivered to the thread.
Example Code
This example shows how a thread can notify the system to hold asynchronous exceptions during a section of code.
#define INCL_DOSEXCEPTIONS /* Exception values */ #define INCL_DOSERRORS /* Error values */ #include <os2.h> #include <stdio.h> int main(VOID) { ULONG ulNestLevel = 0; /* Global variable tracking nesting of DosEnterMustComplete calls */ APIRET rc = NO_ERROR; /* Return code */ rc = DosEnterMustComplete(&ulNestLevel); if (rc != NO_ERROR) { printf("DosEnterMustComplete error: return code = %u\n",rc); return 1; } else { printf("ulNestLevel = %u\n",ulNestLevel); } /* ADD BLOCK OF CODE THAT MUST COMPLETE HERE... */ rc = DosExitMustComplete(&ulNestLevel); if (rc != NO_ERROR) { printf("DosExitMustComplete error: return code = %u\n",rc); return 1; } else { printf("ulNestLevel = %u\n",ulNestLevel); } return NO_ERROR; }