mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
2.6 KiB
142 lines
2.6 KiB
/*++
|
|
|
|
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);
|
|
}
|
|
|