/*++ Copyright (c) 1991 Microsoft Corporation Module Name: dllmsg16.c Abstract: This module implements 32 equivalents of OS/2 V1.21 MSG API Calls. The APIs are called from 16->32 thunks (i386\doscalls.asm). Author: Yaron Shamir (YaronS) 07-June-1991 (stubs) Revision History: --*/ #define INCL_OS2V20_ERRORS #define INCL_OS2V20_ERRORMSG #include "os2dll.h" #include "os2dll16.h" APIRET DosTrueGetMessage( IN PSZ Variables[], IN ULONG CountVariables, OUT PCHAR Buffer, IN ULONG Length, IN ULONG MessageNumber, IN PSZ MessageFileName, OUT PUSHORT pMessageLength, IN PBYTE pMsgSeg ) { APIRET rc; int i; PSZ Vtable[9]; ULONG MessageLength; if (CountVariables > 9) { return( ERROR_MR_INV_IVCOUNT ); } try { Od2ProbeForRead(Variables, sizeof(ULONG) * CountVariables, 1); } except( EXCEPTION_EXECUTE_HANDLER ) { Od2ExitGP(); } try { Od2ProbeForWrite(pMessageLength, sizeof(USHORT), 1); } except( EXCEPTION_EXECUTE_HANDLER ) { Od2ExitGP(); } for (i = 0; i < (int)CountVariables; i++) { Vtable[i] = (PSZ)(FARPTRTOFLAT(Variables[i])); } MessageLength = (ULONG) *pMessageLength; rc = DosGetMessage( Vtable, CountVariables, Buffer, Length, MessageNumber, MessageFileName, &MessageLength, pMsgSeg ); *pMessageLength = (USHORT) MessageLength; return (rc); } APIRET DosInsMessage( IN PSZ Variables[], IN ULONG CountVariables, IN PCHAR Message, IN ULONG MessageLength, OUT PCHAR Buffer, IN ULONG Length, OUT PSHORT pActualMessageLength ) { APIRET rc; int i; PSZ Vtable[9]; ULONG ActualMessageLength; if (CountVariables > 9) { return( ERROR_MR_INV_IVCOUNT ); } try { Od2ProbeForRead(Variables, sizeof(ULONG) * CountVariables, 1); } except( EXCEPTION_EXECUTE_HANDLER ) { Od2ExitGP(); } try { Od2ProbeForWrite(pActualMessageLength, sizeof(USHORT), 1); } except( EXCEPTION_EXECUTE_HANDLER ) { Od2ExitGP(); } for (i = 0; i < (int)CountVariables; i++) { Vtable[i] = (PSZ)(FARPTRTOFLAT(Variables[i])); } ActualMessageLength = (ULONG) *pActualMessageLength; rc = DosInsertMessage( Vtable, CountVariables, Message, MessageLength, Buffer, Length, &ActualMessageLength ); *pActualMessageLength = (USHORT) ActualMessageLength; return(rc); }