Driver: Difference between revisions
Appearance
No edit summary |
mNo edit summary |
||
| (12 intermediate revisions by 11 users not shown) | |||
| Line 1: | Line 1: | ||
(moved some stuff to the [[Talk:Driver]] page | |||
---- | |||
'''Found error in DosGetMessage API return codes ''' | |||
Really it is OS/2 API bug report | |||
---- | |||
/* Some words on how to create message files: | |||
This example demonstrates how to create a message with inserts from a system message file. It | |||
creates a file named "SAMPLE.TXT" with the following 3 lines in it: | |||
;sample system message file - SAMPLE.MSG ... | |||
DOS<CR> | |||
DOS1000E: %1 Error at Station %2%0<CR> | |||
Note:<CR> stands for '\n' | |||
Note2:if you write <SPACE><CR> then you will see that MKMSGF is really guano | |||
It then generates a message file by issuing the following command at an OS/2 command prompt: | |||
MKMSGF SAMPLE.TXT SAMPLE.MSG | |||
*/ | |||
#define INCL_DOSMISC /* Miscellaneous values */ | |||
#define INCL_DOSERRORS /* DOS Error values */ | |||
#include <os2.h> | |||
#include <stdio.h> | |||
#include <string.h> | |||
int main(VOID) | |||
{ | |||
UCHAR *IvTable[2] = {0}; /* Table of variables to insert */ | |||
UCHAR szOutMsg[80]= ""; /* Message buffer */ | |||
ULONG ulMsgLen = 0; /* Length of returned message */ | |||
APIRET rc = 0; /* Return code */ | |||
IvTable[0] = "Automation Failure"; | |||
IvTable[1] = "69B"; | |||
/* Create error message with inserts from system message file SAMPLE.MSG */ | |||
rc = DosGetMessage(IvTable, /* Message insert pointer array */ | |||
2, /* Number of inserts */ | |||
szOutMsg, /* Output message */ | |||
sizeof(szOutMsg), /* Length of output message area */ | |||
100L, /* Number of message requested */ | |||
"SAMPLE.MSG", /* Message file (created by MKMSGF) */ | |||
&ulMsgLen); /* Length of resulting output message */ | |||
if (rc != NO_ERROR) { | |||
printf("DosGetMessage error: return code = %u\n", rc); | |||
return 1; | |||
} | |||
printf("%s\n", szOutMsg); | |||
return NO_ERROR; | |||
} | |||
/*--------------- Output will be as ------------- | |||
C:>message.exe | |||
DosGetMessage error: return code = 316 | |||
/*--------------- Output should be as ------------- | |||
DosGetMessage error: return code = 317 | |||
-------------------------------------------------*/ | |||
/* | |||
DosGetMessage returns one of the following values: | |||
....... | |||
316 ERROR_MR_MSG_TOO_LONG | |||
317 ERROR_MR_MID_NOT_FOUND | |||
*/ | |||
[[Category:Driver Articles]] | |||
Latest revision as of 19:54, 22 August 2022
(moved some stuff to the Talk:Driver page
Found error in DosGetMessage API return codes
Really it is OS/2 API bug report
/* Some words on how to create message files:
This example demonstrates how to create a message with inserts from a system message file. It
creates a file named "SAMPLE.TXT" with the following 3 lines in it:
;sample system message file - SAMPLE.MSG ...
DOS<CR>
DOS1000E: %1 Error at Station %2%0<CR>
Note:<CR> stands for '\n'
Note2:if you write <SPACE><CR> then you will see that MKMSGF is really guano
It then generates a message file by issuing the following command at an OS/2 command prompt:
MKMSGF SAMPLE.TXT SAMPLE.MSG
*/
#define INCL_DOSMISC /* Miscellaneous values */
#define INCL_DOSERRORS /* DOS Error values */
#include <os2.h>
#include <stdio.h>
#include <string.h>
int main(VOID)
{
UCHAR *IvTable[2] = {0}; /* Table of variables to insert */
UCHAR szOutMsg[80]= ""; /* Message buffer */
ULONG ulMsgLen = 0; /* Length of returned message */
APIRET rc = 0; /* Return code */
IvTable[0] = "Automation Failure";
IvTable[1] = "69B";
/* Create error message with inserts from system message file SAMPLE.MSG */
rc = DosGetMessage(IvTable, /* Message insert pointer array */
2, /* Number of inserts */
szOutMsg, /* Output message */
sizeof(szOutMsg), /* Length of output message area */
100L, /* Number of message requested */
"SAMPLE.MSG", /* Message file (created by MKMSGF) */
&ulMsgLen); /* Length of resulting output message */
if (rc != NO_ERROR) {
printf("DosGetMessage error: return code = %u\n", rc);
return 1;
}
printf("%s\n", szOutMsg);
return NO_ERROR;
}
/*--------------- Output will be as ------------- C:>message.exe DosGetMessage error: return code = 316 /*--------------- Output should be as ------------- DosGetMessage error: return code = 317 -------------------------------------------------*/
/*
DosGetMessage returns one of the following values:
.......
316 ERROR_MR_MSG_TOO_LONG
317 ERROR_MR_MID_NOT_FOUND
*/