Field Types
Called from a user-written DLL subroutine to obtain a buffer of data sent by a partner application upon notification that the data has become available.
C Language
The declarations for this subroutine and for the integer constants Declaration: that can be used with it are found in the ESL APPC C language include file (ESLAPPC.H).
APPCGetDLLData is declared in the include file, ESLAPPC.H., according to the following syntax:
USHORT APIENTRY
APPCGetDLLData(ULONG CONVERSATION_ID,
PPBYTE BUFFER_POINTER,
PUSHORT BUFFER_LENGTH);
Arguments:
•CONVERSATION_ID is an unsigned long value containing the conversation identifier (handle) for the APPC conversation returned by either APPCStart or APPCAcceptStart.
•BUFFER_POINTER is a pointer to a pointer variable that is set to the address of a buffer. This buffer contains the data received from the partner. The pointer to the buffer is returned. The buffer must be freed in the following manner:
LocalFree(*BUFFER_POINTER);
•BUFFER_LENGTH is a pointer to an unsigned short value that will contain the length of the data buffer.
Errors:
APPC_NORMAL_COMPLETION |
Normal completion. |
APPC_ERR_OUT_OF_MEMORY |
Out of memory. |
APPC_ERR_INV_CONV_ID |
Invalid argument: CONVERSATION_ID |
APPC_ERR_INV_BUFFER_POINTER |
Invalid argument: BUFFER_POINTER |
APPC_ERR_INV_BUFFER_LENGTH |
Invalid argument: BUFFER_LENGTH pointer is zero. |
APPC_ERR_UNEXPECTED_ERROR |
Unexpected error encountered. |
Examples:
In the ESL program:
# Response to data from partner
response to stimulus APPC_EVENT APPC_Data ConvID
call MyAppGetData
( ConvID, # Handle from Start/AcceptStart
Int1, # From BufInt1
String1, # From BufStr1
String2, # From BufStr2
String3 ) # From BufStr3
In the user-written DLL routine:
/* MyAppGetData, a routine written in C */
#include <eslappc.h> /* Defines to call functions */
typedef struct { /* Format of data to send/receive */
unsigned long BufInt1;
char BufStr1[80];
char BufStr2[16];
char BufStr3[40];
} INPUTAREA;
INPUTAREA *MyBuf;
PBYTE pData;
ULONG ConvID;
USHORT Length;
APPCGetDLLData ( ConvID, /* Handle from Start/AcceptStart */
&pData, /* Buffer returned */
&Length );/* Length of data in buffer */
MyBuf = (INPUTAREA *)pData;
// Process data received
. . .
LocalFree(pData);