Annotation of mstools/h/ddeml.h, revision 1.1.1.2

1.1       root        1: /*++ BUILD Version: 0001    // Increment this if a change has global effects
                      2: 
                      3: /*****************************************************************************\
                      4: *                                                                             *
                      5: *  ddeml.h -    DDEML API header file
                      6: *                                                                             *
                      7: *               Version 3.10                                                  *                   *
                      8: *                                                                             *
                      9: *               Copyright (c) 1992, Microsoft Corp.  All rights reserved.     *
                     10: *                                                                             *
                     11: \*****************************************************************************/
                     12: #ifndef _INC_DDEMLH
                     13: #define _INC_DDEMLH
                     14: 
                     15: /******** public types ********/
                     16: 
                     17: typedef DWORD          HCONVLIST;
                     18: typedef DWORD          HCONV;
                     19: typedef DWORD          HSZ;
                     20: typedef DWORD          HDDEDATA;
                     21: #define EXPENTRY
                     22: 
                     23: /* the following structure is for use with XTYP_WILDCONNECT processing. */
                     24: 
                     25: typedef struct tagHSZPAIR {
                     26:     HSZ hszSvc;
                     27:     HSZ hszTopic;
                     28: } HSZPAIR;
                     29: typedef HSZPAIR FAR *PHSZPAIR;
                     30: 
                     31: /* The following structure is used by DdeConnect() and DdeConnectList() and
                     32:    by XTYP_CONNECT and XTYP_WILDCONNECT callbacks. */
                     33: 
                     34: typedef struct tagCONVCONTEXT {
                     35:     UINT        cb;             /* set to sizeof(CONVCONTEXT) */
                     36:     UINT        wFlags;         /* none currently defined. */
                     37:     UINT        wCountryID;     /* country code for topic/item strings used. */
                     38:     int         iCodePage;      /* codepage used for topic/item strings. */
                     39:     DWORD       dwLangID;       /* language ID for topic/item strings. */
                     40:     DWORD       dwSecurity;     /* Private security code. */
                     41: } CONVCONTEXT;
                     42: typedef CONVCONTEXT FAR *PCONVCONTEXT;
                     43: 
                     44: 
                     45: /* The following structure is used by DdeQueryConvInfo(): */
                     46: 
                     47: typedef struct tagCONVINFO {
                     48:     DWORD   cb;            /* sizeof(CONVINFO)  */
                     49:     DWORD   hUser;         /* user specified field  */
                     50:     HCONV   hConvPartner;  /* hConv on other end or 0 if non-ddemgr partner  */
                     51:     HSZ     hszSvcPartner; /* app name of partner if obtainable  */
                     52:     HSZ     hszServiceReq; /* AppName requested for connection  */
                     53:     HSZ     hszTopic;      /* Topic name for conversation  */
                     54:     HSZ     hszItem;       /* transaction item name or NULL if quiescent  */
                     55:     UINT    wFmt;          /* transaction format or NULL if quiescent  */
                     56:     UINT    wType;         /* XTYP_ for current transaction  */
                     57:     UINT    wStatus;       /* ST_ constant for current conversation  */
                     58:     UINT    wConvst;       /* XST_ constant for current transaction  */
                     59:     UINT    wLastError;    /* last transaction error.  */
                     60:     HCONVLIST hConvList;   /* parent hConvList if this conversation is in a list */
                     61:     CONVCONTEXT ConvCtxt;  /* conversation context */
1.1.1.2 ! root       62:     HWND    hwnd;          /* window handle for this conversation */
        !            63:     HWND    hwndPartner;   /* partner window handle for this conversation */
1.1       root       64: } CONVINFO;
                     65: typedef CONVINFO FAR *PCONVINFO;
                     66: 
                     67: /***** conversation states (usState) *****/
                     68: 
                     69: #define     XST_NULL              0  /* quiescent states */
                     70: #define     XST_INCOMPLETE        1
                     71: #define     XST_CONNECTED         2
                     72: #define     XST_INIT1             3  /* mid-initiation states */
                     73: #define     XST_INIT2             4
                     74: #define     XST_REQSENT           5  /* active conversation states */
                     75: #define     XST_DATARCVD          6
                     76: #define     XST_POKESENT          7
                     77: #define     XST_POKEACKRCVD       8
                     78: #define     XST_EXECSENT          9
                     79: #define     XST_EXECACKRCVD      10
                     80: #define     XST_ADVSENT          11
                     81: #define     XST_UNADVSENT        12
                     82: #define     XST_ADVACKRCVD       13
                     83: #define     XST_UNADVACKRCVD     14
                     84: #define     XST_ADVDATASENT      15
                     85: #define     XST_ADVDATAACKRCVD   16
                     86: 
                     87: /* used in LOWORD(dwData1) of XTYP_ADVREQ callbacks... */
                     88: #define     CADV_LATEACK         0xFFFF
                     89: 
                     90: /***** conversation status bits (fsStatus) *****/
                     91: 
                     92: #define     ST_CONNECTED        0x0001
                     93: #define     ST_ADVISE           0x0002
                     94: #define     ST_ISLOCAL          0x0004
                     95: #define     ST_BLOCKED          0x0008
                     96: #define     ST_CLIENT           0x0010
                     97: #define     ST_TERMINATED       0x0020
                     98: #define     ST_INLIST           0x0040
                     99: #define     ST_BLOCKNEXT        0x0080
                    100: #define     ST_ISSELF           0x0100
                    101: 
                    102: 
                    103: /* DDE constants for wStatus field */
                    104: 
                    105: #define DDE_FACK               0x8000
                    106: #define DDE_FBUSY              0x4000
                    107: #define DDE_FDEFERUPD          0x4000
                    108: #define DDE_FACKREQ            0x8000
                    109: #define DDE_FRELEASE           0x2000
                    110: #define DDE_FREQUESTED         0x1000
                    111: #define DDE_FAPPSTATUS         0x00ff
1.1.1.2 ! root      112: #define DDE_FNOTPROCESSED       0x0000
        !           113: 
        !           114: #define DDE_FACKRESERVED       (~(DDE_FACK | DDE_FBUSY | DDE_FAPPSTATUS))
        !           115: #define DDE_FADVRESERVED       (~(DDE_FACKREQ | DDE_FDEFERUPD))
        !           116: #define DDE_FDATRESERVED       (~(DDE_FACKREQ | DDE_FRELEASE | DDE_FREQUESTED))
        !           117: #define DDE_FPOKRESERVED       (~(DDE_FRELEASE))
1.1       root      118: 
                    119: /***** message filter hook types *****/
                    120: 
                    121: #define     MSGF_DDEMGR             0x8001
                    122: 
                    123: /***** codepage constants ****/
                    124: 
                    125: #define CP_WINANSI      1004    /* default codepage for windows & old DDE convs. */
                    126: #define CP_WINUNICODE   1200
                    127: 
                    128: /***** transaction types *****/
                    129: 
                    130: #define     XTYPF_NOBLOCK            0x0002  /* CBR_BLOCK will not work */
                    131: #define     XTYPF_NODATA             0x0004  /* DDE_FDEFERUPD */
                    132: #define     XTYPF_ACKREQ             0x0008  /* DDE_FACKREQ */
                    133: 
                    134: #define     XCLASS_MASK              0xFC00
                    135: #define     XCLASS_BOOL              0x1000
                    136: #define     XCLASS_DATA              0x2000
                    137: #define     XCLASS_FLAGS             0x4000
                    138: #define     XCLASS_NOTIFICATION      0x8000
                    139: 
                    140: #define     XTYP_ERROR              (0x0000 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK )
                    141: #define     XTYP_ADVDATA            (0x0010 | XCLASS_FLAGS         )
                    142: #define     XTYP_ADVREQ             (0x0020 | XCLASS_DATA | XTYPF_NOBLOCK )
                    143: #define     XTYP_ADVSTART           (0x0030 | XCLASS_BOOL          )
                    144: #define     XTYP_ADVSTOP            (0x0040 | XCLASS_NOTIFICATION)
                    145: #define     XTYP_EXECUTE            (0x0050 | XCLASS_FLAGS         )
                    146: #define     XTYP_CONNECT            (0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK)
                    147: #define     XTYP_CONNECT_CONFIRM    (0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
                    148: #define     XTYP_XACT_COMPLETE      (0x0080 | XCLASS_NOTIFICATION  )
                    149: #define     XTYP_POKE               (0x0090 | XCLASS_FLAGS         )
                    150: #define     XTYP_REGISTER           (0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
                    151: #define     XTYP_REQUEST            (0x00B0 | XCLASS_DATA          )
                    152: #define     XTYP_DISCONNECT         (0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
                    153: #define     XTYP_UNREGISTER         (0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
                    154: #define     XTYP_WILDCONNECT        (0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK)
                    155: 
                    156: #define     XTYP_MASK                0x00F0
                    157: #define     XTYP_SHIFT               4  /* shift to turn XTYP_ into an index */
                    158: 
                    159: /***** Timeout constants *****/
                    160: 
                    161: #define     TIMEOUT_ASYNC           0xFFFFFFFF
                    162: 
                    163: /***** Transaction ID constants *****/
                    164: 
                    165: #define     QID_SYNC                0xFFFFFFFF
                    166: 
                    167: /****** public strings used in DDE ******/
                    168: 
                    169: #define SZDDESYS_TOPIC          "System"
                    170: #define SZDDESYS_ITEM_TOPICS    "Topics"
                    171: #define SZDDESYS_ITEM_SYSITEMS  "SysItems"
                    172: #define SZDDESYS_ITEM_RTNMSG    "ReturnMessage"
                    173: #define SZDDESYS_ITEM_STATUS    "Status"
                    174: #define SZDDESYS_ITEM_FORMATS   "Formats"
                    175: #define SZDDESYS_ITEM_HELP      "Help"
                    176: #define SZDDE_ITEM_ITEMLIST     "TopicItemList"
                    177: 
                    178: 
                    179: /****** API entry points ******/
                    180: 
                    181: typedef HDDEDATA CALLBACK FNCALLBACK(UINT wType, UINT wFmt, HCONV hConv,
                    182:         HSZ hsz1, HSZ hsz2, HDDEDATA hData, DWORD dwData1, DWORD dwData2);
                    183: typedef FNCALLBACK *PFNCALLBACK;
                    184: 
                    185: #define     CBR_BLOCK                0xffffffffL
                    186: 
                    187: /* DLL registration functions */
                    188: 
                    189: UINT WINAPI DdeInitializeA(LPDWORD pidInst, PFNCALLBACK pfnCallback,
                    190:         DWORD afCmd, DWORD ulRes);
                    191: UINT WINAPI DdeInitializeW(LPDWORD pidInst, PFNCALLBACK pfnCallback,
                    192:         DWORD afCmd, DWORD ulRes);
                    193: #ifdef UNICODE
                    194: #define DdeInitialize DdeInitializeW
                    195: #else
                    196: #define DdeInitialize DdeInitializeA
                    197: #endif // !UNICODE
                    198: 
                    199: /*
                    200:  * Callback filter flags for use with standard apps.
                    201:  */
                    202: 
                    203: #define     CBF_FAIL_SELFCONNECTIONS     0x00001000
                    204: #define     CBF_FAIL_CONNECTIONS         0x00002000
                    205: #define     CBF_FAIL_ADVISES             0x00004000
                    206: #define     CBF_FAIL_EXECUTES            0x00008000
                    207: #define     CBF_FAIL_POKES               0x00010000
                    208: #define     CBF_FAIL_REQUESTS            0x00020000
                    209: #define     CBF_FAIL_ALLSVRXACTIONS      0x0003f000
                    210: 
                    211: #define     CBF_SKIP_CONNECT_CONFIRMS    0x00040000
                    212: #define     CBF_SKIP_REGISTRATIONS       0x00080000
                    213: #define     CBF_SKIP_UNREGISTRATIONS     0x00100000
                    214: #define     CBF_SKIP_DISCONNECTS         0x00200000
                    215: #define     CBF_SKIP_ALLNOTIFICATIONS    0x003c0000
                    216: 
                    217: /*
                    218:  * Application command flags
                    219:  */
                    220: #define     APPCMD_CLIENTONLY            0x00000010L
                    221: #define     APPCMD_FILTERINITS           0x00000020L
                    222: #define     APPCMD_MASK                  0x00000FF0L
                    223: 
                    224: /*
                    225:  * Application classification flags
                    226:  */
                    227: #define     APPCLASS_STANDARD            0x00000000L
                    228: #define     APPCLASS_MASK                0x0000000FL
                    229: 
                    230: 
                    231: 
                    232: BOOL WINAPI DdeUninitialize(DWORD idInst);
                    233: 
                    234: /* conversation enumeration functions */
                    235: 
                    236: HCONVLIST WINAPI DdeConnectList(DWORD idInst, HSZ hszService, HSZ hszTopic,
                    237:         HCONVLIST hConvList, PCONVCONTEXT pCC);
                    238: HCONV WINAPI DdeQueryNextServer(HCONVLIST hConvList, HCONV hConvPrev);
                    239: BOOL WINAPI DdeDisconnectList(HCONVLIST hConvList);
                    240: 
                    241: /* conversation control functions */
                    242: 
                    243: HCONV WINAPI DdeConnect(DWORD idInst, HSZ hszService, HSZ hszTopic,
                    244:         PCONVCONTEXT pCC);
                    245: BOOL WINAPI DdeDisconnect(HCONV hConv);
                    246: HCONV WINAPI DdeReconnect(HCONV hConv);
                    247: UINT WINAPI DdeQueryConvInfo(HCONV hConv, DWORD idTransaction, PCONVINFO pConvInfo);
                    248: BOOL WINAPI DdeSetUserHandle(HCONV hConv, DWORD id, DWORD hUser);
                    249: BOOL WINAPI DdeAbandonTransaction(DWORD idInst, HCONV hConv, DWORD idTransaction);
                    250: 
                    251: 
                    252: /* app server interface functions */
                    253: 
                    254: BOOL WINAPI DdePostAdvise(DWORD idInst, HSZ hszTopic, HSZ hszItem);
                    255: BOOL WINAPI DdeEnableCallback(DWORD idInst, HCONV hConv, UINT wCmd);
                    256: BOOL WINAPI DdeImpersonateClient(HCONV hCOnv);
                    257: 
                    258: #define EC_ENABLEALL            0
                    259: #define EC_ENABLEONE            ST_BLOCKNEXT
                    260: #define EC_DISABLE              ST_BLOCKED
                    261: #define EC_QUERYWAITING         2
                    262: 
                    263: 
                    264: HDDEDATA WINAPI DdeNameService(DWORD idInst, HSZ hsz1, HSZ hsz2, UINT afCmd);
                    265: 
                    266: #define DNS_REGISTER        0x0001
                    267: #define DNS_UNREGISTER      0x0002
                    268: #define DNS_FILTERON        0x0004
                    269: #define DNS_FILTEROFF       0x0008
                    270: 
                    271: /* app client interface functions */
                    272: 
                    273: HDDEDATA WINAPI DdeClientTransaction(LPBYTE pData, DWORD cbData,
                    274:         HCONV hConv, HSZ hszItem, UINT wFmt, UINT wType,
                    275:         DWORD dwTimeout, LPDWORD pdwResult);
                    276: 
                    277: /* data transfer functions */
                    278: 
                    279: HDDEDATA WINAPI DdeCreateDataHandle(DWORD idInst, LPBYTE pSrc, DWORD cb,
                    280:         DWORD cbOff, HSZ hszItem, UINT wFmt, UINT afCmd);
                    281: HDDEDATA WINAPI DdeAddData(HDDEDATA hData, LPBYTE pSrc, DWORD cb, DWORD cbOff);
                    282: DWORD WINAPI DdeGetData(HDDEDATA hData, LPBYTE pDst, DWORD cbMax, DWORD cbOff);
                    283: LPBYTE WINAPI DdeAccessData(HDDEDATA hData, LPDWORD pcbDataSize);
                    284: BOOL WINAPI DdeUnaccessData(HDDEDATA hData);
                    285: BOOL WINAPI DdeFreeDataHandle(HDDEDATA hData);
                    286: 
                    287: #define     HDATA_APPOWNED          0x0001
                    288: 
                    289: 
                    290: UINT WINAPI DdeGetLastError(DWORD idInst);
                    291: 
                    292: #define     DMLERR_NO_ERROR                    0       /* must be 0 */
                    293: 
                    294: #define     DMLERR_FIRST                       0x4000
                    295: 
                    296: #define     DMLERR_ADVACKTIMEOUT               0x4000
                    297: #define     DMLERR_BUSY                        0x4001
                    298: #define     DMLERR_DATAACKTIMEOUT              0x4002
                    299: #define     DMLERR_DLL_NOT_INITIALIZED         0x4003
                    300: #define     DMLERR_DLL_USAGE                   0x4004
                    301: #define     DMLERR_EXECACKTIMEOUT              0x4005
                    302: #define     DMLERR_INVALIDPARAMETER            0x4006
                    303: #define     DMLERR_LOW_MEMORY                  0x4007
                    304: #define     DMLERR_MEMORY_ERROR                0x4008
                    305: #define     DMLERR_NOTPROCESSED                0x4009
                    306: #define     DMLERR_NO_CONV_ESTABLISHED         0x400a
                    307: #define     DMLERR_POKEACKTIMEOUT              0x400b
                    308: #define     DMLERR_POSTMSG_FAILED              0x400c
                    309: #define     DMLERR_REENTRANCY                  0x400d
                    310: #define     DMLERR_SERVER_DIED                 0x400e
                    311: #define     DMLERR_SYS_ERROR                   0x400f
                    312: #define     DMLERR_UNADVACKTIMEOUT             0x4010
                    313: #define     DMLERR_UNFOUND_QUEUE_ID            0x4011
                    314: 
                    315: #define     DMLERR_LAST                        0x4011
                    316: 
                    317: HSZ  WINAPI DdeCreateStringHandleA(DWORD idInst, LPSTR psz, int iCodePage);
                    318: HSZ  WINAPI DdeCreateStringHandleW(DWORD idInst, LPWSTR psz, int iCodePage);
                    319: #ifdef UNICODE
                    320: #define DdeCreateStringHandle DdeCreateStringHandleW
                    321: #else
                    322: #define DdeCreateStringHandle DdeCreateStringHandleA
                    323: #endif // !UNICODE
                    324: DWORD WINAPI DdeQueryStringA(DWORD idInst, HSZ hsz, LPSTR psz, DWORD cchMax, int iCodePage);
                    325: DWORD WINAPI DdeQueryStringW(DWORD idInst, HSZ hsz, LPWSTR psz, DWORD cchMax, int iCodePage);
                    326: #ifdef UNICODE
                    327: #define DdeQueryString DdeQueryStringW
                    328: #else
                    329: #define DdeQueryString DdeQueryStringA
                    330: #endif // !UNICODE
                    331: BOOL WINAPI DdeFreeStringHandle(DWORD idInst, HSZ hsz);
                    332: BOOL WINAPI DdeKeepStringHandle(DWORD idInst, HSZ hsz);
                    333: int WINAPI DdeCmpStringHandles(HSZ hsz1, HSZ hsz2);
                    334: 
                    335: 
                    336: #ifndef NODDEMLSPY
                    337: /* */
                    338: /* DDEML public debugging header file info */
                    339: /* */
                    340: 
                    341: typedef struct tagDDEML_MSG_HOOK_DATA {    // new for NT
                    342:     UINT uiLo;      // unpacked lo and hi parts of lParam
                    343:     UINT uiHi;
                    344:     DWORD cbData;   // amount of data in message, if any. May be > than 32 bytes.
                    345:     DWORD Data[8];  // data peeking by DDESPY is limited to 32 bytes.
                    346: } DDEML_MSG_HOOK_DATA, *PDDEML_MSG_HOOK_DATA;
                    347: 
                    348: 
                    349: typedef struct tagMONMSGSTRUCT {
                    350:     UINT    cb;
                    351:     HWND    hwndTo;
                    352:     DWORD   dwTime;
                    353:     HANDLE  hTask;
                    354:     UINT    wMsg;
                    355:     WPARAM  wParam;
                    356:     LPARAM  lParam;
                    357:     DDEML_MSG_HOOK_DATA dmhd;       // new for NT
                    358: } MONMSGSTRUCT;
                    359: 
                    360: typedef struct tagMONCBSTRUCT {
                    361:     UINT   cb;
                    362:     DWORD  dwTime;
                    363:     HANDLE hTask;
                    364:     DWORD  dwRet;
                    365:     UINT   wType;
                    366:     UINT   wFmt;
                    367:     HCONV  hConv;
                    368:     HSZ    hsz1;
                    369:     HSZ    hsz2;
                    370:     HDDEDATA hData;
                    371:     DWORD  dwData1;
                    372:     DWORD  dwData2;
                    373:     CONVCONTEXT cc;                 // new for NT for XTYP_CONNECT callbacks
                    374:     DWORD  cbData;                  // new for NT for data peeking
                    375:     DWORD  Data[8];                 // new for NT for data peeking
                    376: } MONCBSTRUCT;
                    377: 
                    378: typedef struct tagMONHSZSTRUCT {
                    379:     UINT   cb;
                    380:     BOOL   fsAction;    /* MH_ value */
                    381:     DWORD  dwTime;
                    382:     HSZ    hsz;
                    383:     HANDLE hTask;
                    384:     char   str[1];
                    385: } MONHSZSTRUCT;
                    386: 
                    387: #define MH_CREATE   1
                    388: #define MH_KEEP     2
                    389: #define MH_DELETE   3
                    390: #define MH_CLEANUP  4
                    391: 
                    392: typedef struct tagMONERRSTRUCT {
                    393:     UINT    cb;
                    394:     UINT    wLastError;
                    395:     DWORD   dwTime;
                    396:     HANDLE  hTask;
                    397: } MONERRSTRUCT;
                    398: 
                    399: typedef struct tagMONLINKSTRUCT {
                    400:     UINT    cb;
                    401:     DWORD   dwTime;
                    402:     HANDLE  hTask;
                    403:     BOOL    fEstablished;
                    404:     BOOL    fNoData;
                    405:     HSZ     hszSvc;
                    406:     HSZ     hszTopic;
                    407:     HSZ     hszItem;
                    408:     UINT    wFmt;
                    409:     BOOL    fServer;
                    410:     HCONV   hConvServer;
                    411:     HCONV   hConvClient;
                    412: } MONLINKSTRUCT;
                    413: 
                    414: typedef struct tagMONCONVSTRUCT {
                    415:     UINT    cb;
                    416:     BOOL    fConnect;
                    417:     DWORD   dwTime;
                    418:     HANDLE  hTask;
                    419:     HSZ     hszSvc;
                    420:     HSZ     hszTopic;
                    421:     HCONV   hConvClient;        // Globally unique value != apps local hConv
                    422:     HCONV   hConvServer;        // Globally unique value != apps local hConv
                    423: } MONCONVSTRUCT;
                    424: 
                    425: #define     MAX_MONITORS            4
                    426: #define     APPCLASS_MONITOR        0x00000001L
                    427: #define     XTYP_MONITOR            (0x00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
                    428: 
                    429: /*
                    430:  * Callback filter flags for use with MONITOR apps - 0 implies no monitor
                    431:  * callbacks.
                    432:  */
                    433: #define     MF_HSZ_INFO                  0x01000000
                    434: #define     MF_SENDMSGS                  0x02000000
                    435: #define     MF_POSTMSGS                  0x04000000
                    436: #define     MF_CALLBACKS                 0x08000000
                    437: #define     MF_ERRORS                    0x10000000
                    438: #define     MF_LINKS                     0x20000000
                    439: #define     MF_CONV                      0x40000000
                    440: 
                    441: #define     MF_MASK                      0xFF000000
                    442: #endif /* NODDEMLSPY */
                    443: 
                    444: 
                    445: #endif /* _INC_DDEMLH */
                    446: 
                    447: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.