亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? udfree.c

?? 工業組態軟件modbus驅動源代碼, 包括幫助文件.共享.
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* $Header: "%n Ver=%v  %f  LastEdit=%w  Locker=%l" */
/* "UDFREE.C Ver=1  5-Nov-97,14:00:00  LastEdit=JIMV  Locker=***_NOBODY_***" */
/***********************************************************************\
*                                                                       *
*       Copyright Wonderware Software Development Corp. 1989-1997       *
*                                                                       *
*               ThisFileName="L:\ww\dde_serv\src\udsample\udfree.c"     *
*               LastEditDate="1997 Nov 05  14:00:00"                    *
*                                                                       *
\***********************************************************************/

#include <windows.h>
#include <windowsx.h>
#include <string.h>

#include "ntconv.h"
#include "hmemcpy.h"
#include "chainmgr.h"
#include "udprot.h"
#include "uddefs.h"
#include "udgetstr.h"
#include "wwassert.h"
#include "ntsrvr.h"

USES_ASSERT

extern CHAIN PortList;

/***********************************************************************/
/** free memory associated with message in queue
    returns pointer to next message in queue, if successful **/

LPUDMSG
WINAPI
UdprotFreeMsg(LPUDMSG lpMsg)
{
    LPUDMSG         lpNextMsg;
    LPSTAT          lpTopic;
    LPPORT          lpPort;

#ifdef DEBUG_CALL_TRAFFIC
    if (Verbose)
        debug("UdprotFreeMsg( %Fp )", lpMsg);
#endif

    if (lpMsg == (LPUDMSG) NULL) {
        /* do nothing, return NULL pointer */
        return (LPUDMSG) NULL;
    }

    /* get pointer to next message in queue, if any */
    lpNextMsg = (LPUDMSG) lpMsg->mmChainLink.next_item.ptr;

    /* get pointer to station for this message */
    lpTopic = lpMsg->mmTopic;
    if (lpTopic != (LPSTAT) NULL) {

        /* check current station messages */
        if (lpTopic->statCurMsg == lpMsg) {
            /* station current message is this message, clear pointer */
            lpTopic->statCurMsg = (LPUDMSG) NULL;
        }
        if (lpTopic->statCurReadMsg == lpMsg) {
            /* station current read message is this message, clear pointer */
            lpTopic->statCurReadMsg = (LPUDMSG) NULL;
        }

        /* get pointer to station port */
        lpPort = lpTopic->statPort;
        if (lpPort != (LPPORT) NULL) {
            /* check current port messages */
            if (lpPort->mbCurMsg == lpMsg) {
                /* port current message is this message, clear pointer */
                lpPort->mbCurMsg = (LPUDMSG) NULL;
                /* indicate port is idle */
                lpPort->mbState = PROT_IDLE;
            }
        }
    }

    /* unlock and free memory for this message structure */
    wwHeap_FreePtr( hHeap, lpMsg);
    /* return pointer to next message in queue, if any */
    return lpNextMsg;
} /* UdprotFreeMsg */

/***********************************************************************/
/* delete a message given its chain link pointer */

BOOL FAR DeleteMessageItem (LPCHAINLINK chain_link)
{
    BOOL status;

    /* initialize return value */
    status = FALSE;

    /* check whether pointer is null */
    if (chain_link)
    {
        /* deactivate message and free its memory */
        UdprotFreeMsg((LPUDMSG) chain_link);
        status = TRUE;
    }
    /* indicate whether message was found and deleted */
    return (status);
} /* DeleteMessageItem */

/***********************************************************************/
/** free memory associated with station in list
    return pointer to next station in list, if successful **/

LPSTAT
WINAPI
UdprotFreeTopic(LPSTAT lpTopic)
{
    LPSTAT          lpNextTopic;

    if (lpTopic == (LPSTAT) NULL) {
        /* do nothing, return NULL pointer */
        return (LPSTAT) NULL;
    }

    /* get pointer to next station in list, if any */
    lpNextTopic = (LPSTAT) lpTopic->statChainLink.next_item.ptr;

    /* free any symbol table associated with this station */
    DeleteExtArray (&lpTopic->statSymTab);    /* free the Symbol Table */
    DeleteExtArray (&lpTopic->statSymInd);    /* free the array of indexes */

    /* free any read messages associated with this station */
    DeleteChain (&lpTopic->statReadMsgList, DeleteMessageItem);

    /* free any write messages associated with this station */
    DeleteChain (&lpTopic->statWriteMsgList, DeleteMessageItem);

    /* unlock and free memory for this station structure */
    wwHeap_FreePtr( hHeap, lpTopic);
    /* return pointer to next station */
    return lpNextTopic;
} /* UdprotFreeTopic */

/***********************************************************************/
/* delete a station given its chain link pointer */

BOOL FAR DeleteStationItem (LPCHAINLINK chain_link)
{
    BOOL status;

    /* initialize return value */
    status = FALSE;

    /* check whether pointer is null */
    if (chain_link)
    {
        /* deactivate station and free its memory */
        UdprotFreeTopic((LPSTAT) chain_link);
        status = TRUE;
    }
    /* indicate whether station was found and deleted */
    return (status);
} /* DeleteStationItem */

/***********************************************************************/
/** free memory associated with port in list
    return pointer to next port in list, if successful **/

LPPORT
WINAPI
UdprotFreePort(LPPORT lpPort)
{
    LPPORT          lpNextPort;

    if (lpPort == (LPPORT) NULL) {
        /* do nothing, return NULL pointer */
        return (LPPORT) NULL;
    }

    /* get pointer to next port, if any */
    lpNextPort = (LPPORT) lpPort->mbChainLink.next_item.ptr;

    /* free any stations associated with the port */
    DeleteChain (&lpPort->mbTopicList, DeleteStationItem);

    /* shut down port */
    ClosePort(lpPort);

    /* unlock and free memory for this port structure */
    wwHeap_FreePtr( hHeap, lpPort);
    /* return pointer to next port */
    return lpNextPort;
} /* UdprotFreePort */

/***********************************************************************/
/* deactivate and delete a port given its chain link pointer */

BOOL FAR DeletePortItem (LPCHAINLINK chain_link)
{
    BOOL status;

    /* initialize return value */
    status = FALSE;

    /* check whether pointer is null */
    if (chain_link)
    {
        /* deactivate port and free its memory */
        UdprotFreePort((LPPORT) chain_link);
        status = TRUE;
    }
    /* indicate whether port was found and deleted */
    return (status);
} /* DeletePortItem */

/***********************************************************************/
/** free memory associated with a symbol table entry
    given the topic and the symbol pointer **/

BOOL
WINAPI
UdprotFreeSymEnt(LPSTAT   lpTopic,
                 SYMPTR   lpSymEnt)
{
    assert(lpTopic);
    assert(lpSymEnt);

#ifdef DEBUG_CALL_TRAFFIC
    if (Verbose)
        debug("UdprotFreeSymEnt( %Fp, %ul )",
              lpTopic, (unsigned long) lpSymEnt->msIndex);
#endif

    /****************************************************************\
       The symbol table entry has already been removed from the list
       of symbols in use and returned to the list of unused symbols.
       This can be left as is until the server is shut down,
       or you can add code to shrink the size of the symbol table.
    \****************************************************************/

    return TRUE;
} /* UdprotFreeSymEnt */

/***********************************************************************/
/** free symbol table entry in symbol table for indicated station
    return TRUE if successful **/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品福利一区| 亚洲天堂av一区| 国产精品久久久久桃色tv| 亚洲一区二三区| 成人黄色在线网站| 欧美xxxx老人做受| 亚洲一卡二卡三卡四卡无卡久久| 国产精品一区在线| 欧美一级电影网站| 一区二区三区欧美日| 懂色av噜噜一区二区三区av| 日韩一区二区在线观看视频| 亚洲线精品一区二区三区八戒| 成人av午夜电影| 26uuu精品一区二区| 日韩国产欧美视频| 欧美无人高清视频在线观看| 1024成人网| 成人永久看片免费视频天堂| 欧美精品一区二区三区四区| 天天综合日日夜夜精品| 在线一区二区三区四区五区| 国产精品白丝在线| 国产jizzjizz一区二区| 久久久久久久网| 裸体一区二区三区| 日韩一区二区三区电影| 日韩专区一卡二卡| 欧美美女视频在线观看| 亚洲国产一区在线观看| 欧美专区日韩专区| 一区二区三区四区中文字幕| 色一区在线观看| 亚洲精品国产一区二区精华液| 99久久精品国产导航| |精品福利一区二区三区| 不卡视频一二三四| 亚洲欧洲成人精品av97| 91亚洲午夜精品久久久久久| 亚洲丝袜自拍清纯另类| av爱爱亚洲一区| 日韩毛片高清在线播放| 欧美丝袜丝nylons| 日本亚洲三级在线| 日韩欧美在线影院| 国产剧情av麻豆香蕉精品| 亚洲国产精品成人综合色在线婷婷| 国产盗摄女厕一区二区三区| 国产精品久久一级| 色香蕉成人二区免费| 夜夜亚洲天天久久| 欧美一区二区在线免费观看| 久久国产精品色婷婷| 久久久噜噜噜久久人人看 | 日本韩国一区二区三区| 亚洲尤物视频在线| 欧美va日韩va| 成人激情免费电影网址| 亚洲成av人片一区二区三区| 精品少妇一区二区| 不卡的电影网站| 午夜视频久久久久久| 26uuu欧美| 色av成人天堂桃色av| 日韩高清一级片| 国产日韩在线不卡| 91成人免费电影| 激情欧美一区二区三区在线观看| 国产精品网站导航| 精品视频一区二区不卡| 国产一区二区剧情av在线| 亚洲欧美日韩在线播放| 日韩欧美亚洲国产另类| 99久久婷婷国产| 免费精品视频最新在线| 国产精品久久久爽爽爽麻豆色哟哟| 欧美日韩国产三级| 成人少妇影院yyyy| 三级精品在线观看| 中文字幕免费不卡在线| 69堂国产成人免费视频| 成人av集中营| 麻豆成人免费电影| 夜色激情一区二区| 欧美国产一区二区| 欧美大片一区二区| 欧美做爰猛烈大尺度电影无法无天| 精品写真视频在线观看| 一区二区三区精品在线| 在线播放视频一区| 狠狠色狠狠色综合系列| 一区二区三区中文字幕| 精品久久99ma| 欧美日韩美女一区二区| 丁香亚洲综合激情啪啪综合| 蜜桃视频第一区免费观看| 亚洲你懂的在线视频| 国产网站一区二区| 日韩三级av在线播放| 欧美日韩一区二区三区在线 | 亚洲精品中文在线影院| 精品国产三级电影在线观看| 欧美日韩午夜精品| 色欧美日韩亚洲| jizzjizzjizz欧美| 国产精品1区2区| 另类调教123区| 日韩av一二三| 欧美性极品少妇| 久久久99精品免费观看| 制服丝袜av成人在线看| 91福利视频久久久久| 91色乱码一区二区三区| www.日韩大片| 99久久精品国产精品久久| 不卡的av在线播放| 成人精品免费看| 福利一区二区在线观看| 国产成人在线视频网址| 国产精品 日产精品 欧美精品| 国产乱淫av一区二区三区| 国模冰冰炮一区二区| 国产一区欧美二区| 国产一区二区日韩精品| 国产 日韩 欧美大片| 成人午夜在线视频| 99riav久久精品riav| 97久久超碰国产精品| 91麻豆精东视频| 欧美系列在线观看| 欧美日韩国产综合一区二区| 欧美日韩视频专区在线播放| 4hu四虎永久在线影院成人| 91精品国模一区二区三区| 日韩色视频在线观看| 久久一日本道色综合| 亚洲国产经典视频| 亚洲男人的天堂网| 亚洲成人资源在线| 久久99精品国产麻豆不卡| 国产成人免费在线视频| eeuss鲁片一区二区三区在线看| 91视频国产观看| 这里是久久伊人| 国产亚洲午夜高清国产拍精品| 国产欧美一区视频| 一区二区三国产精华液| 奇米影视7777精品一区二区| 国产在线看一区| 91亚洲男人天堂| 91精品婷婷国产综合久久| 国产日韩欧美一区二区三区综合| 最新热久久免费视频| 日韩黄色在线观看| 国产精品一区二区x88av| 色呦呦网站一区| 精品国产91九色蝌蚪| 亚洲人成在线观看一区二区| 日韩成人精品视频| 99国产精品国产精品久久| 7777精品伊人久久久大香线蕉的| 国产精品污污网站在线观看| 日韩精品每日更新| 91丨九色porny丨蝌蚪| 日韩欧美二区三区| 亚洲精品菠萝久久久久久久| 另类小说一区二区三区| 在线国产亚洲欧美| 国产嫩草影院久久久久| 三级久久三级久久久| 色综合天天综合| 国产亚洲精品7777| 喷白浆一区二区| 色狠狠一区二区| 国产精品天天看| 激情综合网天天干| 这里只有精品视频在线观看| 夜夜嗨av一区二区三区| www.亚洲在线| 欧美精品一区二区三区视频| 日韩高清在线不卡| 欧美三级视频在线播放| 国产精品的网站| 国产乱国产乱300精品| 欧美r级电影在线观看| 亚洲不卡一区二区三区| 在线观看日韩国产| 一区二区中文字幕在线| 国产成人免费高清| 久久影院电视剧免费观看| 奇米精品一区二区三区在线观看一| 在线一区二区三区做爰视频网站| 欧美激情中文不卡| 国产精品1区2区3区| 久久一二三国产| 国产老妇另类xxxxx| 国产欧美在线观看一区| 国产在线精品视频| 欧美成人女星排行榜| 蜜桃视频在线观看一区|