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

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

?? notlstnr.cpp

?? funambol windows mobile plugin source code, the source code is taken from the funambol site
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*
 * Copyright (C) 2003-2007 Funambol, Inc
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY, TITLE, NONINFRINGEMENT or FITNESS FOR A PARTICULAR
 * PURPOSE.  See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 * 02111-1307  USA
 */

/* notlstnr.cpp : Defines the entry point for the DLL application.
*                  Handle all the interaction with Services.exe and
*                  with the netwotk. Uses class S4JProxy to interact
*                  with sync4j engine.
*/

#include "stdafx.h"
#include "notlstnr.h"
#include "Notify.h"
#include <stdio.h>
#include <service.h>
#include <iptypes.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <Pmpolicy.h>

#include "logutils.h"
#include "s4jproxy.h"
#include "worker.h"
#include "notify/checknet.h"
#include "notify/s4n_service.h"
#include "notify/addresschange.h"
#include "pim/SettingFunctions.h"
#include "base/startcmd.h"
#include "base/util/utils.h"
#include "processUtils.h"

#include "CTPConfig.h"
#include "CTPManager.h"
#include "CTPMessage.h"


#define LOGLEVEL 1


// Service state
static DWORD g_dwServiceState = SERVICE_STATE_UNINITIALIZED;
// Global critical section
static CRITICAL_SECTION g_cs;

//static
DWORD addressChangeHandler(void);
static DWORD acceptConnection(SOCKET sock);

int getPushTypeFromRegistry();


HANDLE moduleHandle = 0;

///////////////////////////////////////////////////////////////////
// Notification Listener: Dll entry
///////////////////////////////////////////////////////////////////
/**
* Dll entry point.
*/
extern "C" BOOL WINAPI DllMain(HANDLE hInstDll, DWORD fdwReason,
        LPVOID lpvReserved) {
    switch (fdwReason) {
        case DLL_PROCESS_ATTACH:
            g_dwServiceState = SERVICE_STATE_UNINITIALIZED;
            InitializeCriticalSection (&g_cs);
            // This DLL does not require thread attatch/deatch
            DisableThreadLibraryCalls((HMODULE)hInstDll);
            DebugInit(LOGLEVEL, true);
            DebugPrint(L"Process attach.");
            moduleHandle = hInstDll;
            break;

        case DLL_PROCESS_DETACH:
            DeleteCriticalSection (&g_cs);
            DebugPrint(L"Process detach.");
            DebugEnd();
            moduleHandle = 0;
            break;
    }
    return TRUE;
}


///////////////////////////////////////////////////////////////////
// Notification Listener: service callbaks
///////////////////////////////////////////////////////////////////
/**
* Service callback: not implemented.
*/
APIEXPORT BOOL S4N_Open(
        DWORD dwData,
        DWORD dwAccess,
        DWORD dwShareMode
        ) {
    DebugPrint(TEXT("Open - dwData: %lx, dwAccess: %lx, dwShareMode: %lx"),
          dwData, dwAccess, dwShareMode);

    return TRUE;
}

/**
* Service callback: not implemented.
*/
APIEXPORT BOOL S4N_Close( DWORD dwData) {
    DebugPrint(TEXT("Close - dwData: %lx\n"), dwData);
    return TRUE;
}

/**
* Service callback: close the socket and exit.
*/
APIEXPORT BOOL S4N_Deinit( DWORD dwData) {
    DebugPrint(TEXT("Deinit - dwData: %lx\n"), dwData);

    //MessageBox (NULL, TEXT("DeInit"), TEXT("Test"), MB_SETFOREGROUND | MB_OK);
    
    // Stop child threads of STP.
    stopWorker();

    // Stop CTP process: try to send the BYE message and 
    // then close the socket connection.
    CTPManager* ctpManager = CTPManager::getInstance();
    ctpManager->stopCTP();

    //stopCheckForNews();
    DebugEnd();
    // Remove unattended mode
    PowerPolicyNotify(PPN_UNATTENDEDMODE, FALSE);

    return TRUE;
}

/**
* Service callback: init the service and return the listen port.
*/
APIEXPORT DWORD S4N_Init( DWORD dwData) {
    EnterCriticalSection (&g_cs);
    if (g_dwServiceState != SERVICE_STATE_UNINITIALIZED) {
        // Someone is trying to load multiple times
        DebugPrint(L"S4ND: ERROR: service already initialized on S4N_Init() call\r\n");
        LeaveCriticalSection (&g_cs);
        return 0;
    }

    Log(0, "", "notlstnr.txt");
    LOG.setLevel(LOG_LEVEL_DEBUG);

    g_dwServiceState = SERVICE_STATE_STARTING_UP;
    DebugInit(LOGLEVEL);
    DebugPrint(L"S4ND: S4N_Init success - service is in starting up state\r\n");

    LeaveCriticalSection (&g_cs);
    return getListenerPort();
}

/**
* Service callback: main method containing the service.exe events.
* On IOCTL_SERVICE_REFRESH and IOCTL_SERVICE_NOTIFY_ADDR_CHANGE events, it is invoked
* a new ip address change notification to the server.
* On IOCTL_SERVICE_CONNECTION event it is opened a socket connection listening
* for the server messages
*/
APIEXPORT BOOL S4N_IOControl(
        DWORD dwData,
        DWORD dwCode,
        PBYTE pBufIn,
        DWORD dwLenIn,
        PBYTE pBufOut,
        DWORD dwLenOut,
        PDWORD pdwActualOut
        )
{
    DWORD dwError = ERROR_INVALID_PARAMETER;

    // DebugPrint(TEXT("IOControl - dwCode: %lx\n"), dwCode);

    EnterCriticalSection (&g_cs);

    switch(dwCode){
        // Control code sent to start a service.  (services start FIN0:)
        case IOCTL_SERVICE_START:
            if (g_dwServiceState != SERVICE_STATE_OFF) {
                DebugPrint(L"S4ND: ERROR: IOCTL_SERVICE_START"
                        L" fails because service is not off. "
                        L"State=<%d>\r\n",g_dwServiceState);
                dwError = ERROR_SERVICE_ALREADY_RUNNING;
            }
            else {
                // Notification listener must work in unattended mode
                PowerPolicyNotify(PPN_UNATTENDEDMODE, TRUE);

                DebugPrint(L"S4ND: State changed to ON\r\n");
                g_dwServiceState = SERVICE_STATE_ON;
                dwError = ERROR_SUCCESS;
            }
            break;

        // Control code sent to refresh a service. (services refresh FIN0:)
        case IOCTL_SERVICE_REFRESH:

            if (g_dwServiceState != SERVICE_STATE_ON) {
                DebugPrint(L"S4ND:ERROR:IOCTL_SERVICE_REFRESH"
                        L" fails because service is not on. "
                        L"State=<%d>\r\n",g_dwServiceState);
                dwError = ERROR_SERVICE_NOT_ACTIVE;
            }
            else {
                DebugPrint(L"S4ND: Stop on a refresh\r\n");
                g_dwServiceState = SERVICE_STATE_SHUTTING_DOWN;
                stopWorker();
                DebugEnd();
                // Wait for tasks to terminate
                Sleep(1000);
                // Shut the service down, re-read configuration
                // TODO: close connections? Abort sync?
                // (if we have any) and then restart.
                DebugPrint(L"S4ND: Restarting on refresh\r\n");
                g_dwServiceState = SERVICE_STATE_ON;
                dwError = ERROR_SUCCESS;
                addressChangeHandler();
            }
            break;

        // Control code sent to stop a service.  (services stop S4N0:)
        case IOCTL_SERVICE_STOP:
            // No longer accept new network connections.
            // Close existing connections
            if (g_dwServiceState != SERVICE_STATE_ON) {
                DebugPrint(L"S4ND:ERROR:IOCTL_SERVICE_STOP "
                        L"fails.  Service state is not on. "
                        L"Current State=<%d>\r\n",
                        g_dwServiceState);
                dwError = ERROR_SERVICE_NOT_ACTIVE;
            }
            else {
                DebugPrint(L"S4ND: Service stopping\r\n");
                stopWorker();
                DebugEnd();
                g_dwServiceState = SERVICE_STATE_OFF;
                dwError = ERROR_SUCCESS;
            }
            break;

        // An application (possibly services.exe itself) is
        // querying for the service's running state.
        case IOCTL_SERVICE_STATUS:
            // No need for critical section since this is an atomic read.
            __try {
                if (pBufOut && dwLenOut == sizeof(DWORD)) {
                    *(DWORD *)pBufOut = g_dwServiceState;
                    if (pdwActualOut)
                        *pdwActualOut = sizeof(DWORD);
                    dwError = ERROR_SUCCESS;
                }
            }
            __except (EXCEPTION_EXECUTE_HANDLER) {
                DebugPrint(L"S4ND: ERROR Invalid pointer "
                        L"on IOCTL_SERVICE_STATUS\r\n");
                dwError = ERROR_INVALID_PARAMETER;
            }
            break;
        // Services.exe has completed super-service init for this service.
        // Incoming super-service connections can come in at anytime now.
        case IOCTL_SERVICE_STARTED:
            if (g_dwServiceState != SERVICE_STATE_STARTING_UP) {
                DebugPrint(L"S4ND:ERROR:IOCTL_SERVICE_STARTED"
                        L" failed because state != starting up. "
                        L"State=<%d>\r\n",g_dwServiceState);
                dwError = ERROR_SERVICE_ALREADY_RUNNING;
            }
            else {
                DebugPrint(L"S4ND: IOCTL_SERVICE_STARTED "
                        L" changed state to SERVICE_STATE_ON\r\n");
                g_dwServiceState = SERVICE_STATE_ON;
                dwError = ERROR_SUCCESS;
            }
            addressChangeHandler();
            break;

        // IP address changed: notify the server
        case IOCTL_SERVICE_NOTIFY_ADDR_CHANGE:
            dwError = addressChangeHandler();
            break;

        // A new connection request
        case IOCTL_SERVICE_CONNECTION:
            if (dwLenIn != sizeof(SOCKET)) {
                dwError = ERROR_INVALID_PARAMETER;
            }
            else {
                SOCKET sock;

                __try {
                    sock = * ((SOCKET*)pBufIn);
                }
                __except (EXCEPTION_EXECUTE_HANDLER) {
                    dwError = ERROR_INVALID_PARAMETER;
                    break;
                }
                // Call new connection handler
                dwError = acceptConnection(sock);
            }
            break;
        default:
            //DebugPrint(TEXT("IOControl - dwCode: %lx\n"), dwCode);
            return TRUE;
    }

    if (dwError != ERROR_SUCCESS)
        SetLastError(dwError);

    LeaveCriticalSection(&g_cs);

    return (dwError==ERROR_SUCCESS);
}

/**
* Service callback: not implemented.
*/
APIEXPORT DWORD S4N_Read(
        DWORD dwData,
        LPVOID pBuf,
        DWORD dwLen
        ) {
    DebugPrint(TEXT("Read - dwData: %lx\n"), dwData);
    return 0;
}

/**
* Service callback: not implemented.
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
337p日本欧洲亚洲大胆色噜噜| 精品盗摄一区二区三区| 久久精品国产77777蜜臀| 国产精品国产三级国产aⅴ无密码| 91精品婷婷国产综合久久性色| 成人自拍视频在线| 九一九一国产精品| 亚洲成人福利片| 亚洲精品免费一二三区| 国产日韩一级二级三级| 欧美精品乱人伦久久久久久| 91亚洲国产成人精品一区二三| 国产真实乱子伦精品视频| 日本成人中文字幕| 亚洲超碰97人人做人人爱| 1区2区3区精品视频| 国产婷婷精品av在线| 欧美成人在线直播| 欧美一级片免费看| 欧美日本在线播放| 日本韩国视频一区二区| 不卡视频在线观看| www.成人网.com| 欧美日韩精品是欧美日韩精品| 成人免费福利片| 国产精品白丝jk白祙喷水网站| 另类小说色综合网站| 日本中文字幕一区二区有限公司| 亚洲国产精品影院| 亚洲综合免费观看高清完整版在线 | 夜夜精品浪潮av一区二区三区| 中文字幕欧美激情| 国产精品麻豆视频| 国产精品久久久久久久久免费桃花 | 色婷婷精品久久二区二区蜜臀av| 成人sese在线| 97久久超碰国产精品电影| 成人一区在线观看| av成人免费在线观看| 色综合咪咪久久| 欧美三区在线视频| 日韩一级高清毛片| 欧美xxxxxxxx| 久久久久97国产精华液好用吗| 欧美精品一区二区三区四区| 久久丝袜美腿综合| 亚洲国产成人自拍| 亚洲天堂2014| 亚洲一级二级三级在线免费观看| 亚洲成人手机在线| 青青草国产精品亚洲专区无| 久久99国产精品免费网站| 国产曰批免费观看久久久| 国产在线麻豆精品观看| 福利一区在线观看| 日本高清视频一区二区| 91麻豆精品国产91久久久久久久久 | 一二三区精品福利视频| 三级久久三级久久久| 精品一区免费av| 成人网页在线观看| 在线观看视频一区二区| 欧美区视频在线观看| 日韩免费看的电影| 国产精品久久99| 亚洲成av人片在线| 国产伦精品一区二区三区免费| 91污片在线观看| 欧美一区二区三区视频免费 | 91污片在线观看| 欧美一区二区视频免费观看| 国产三级一区二区三区| 国产九九视频一区二区三区| 北条麻妃一区二区三区| 在线不卡中文字幕播放| 国产欧美一区二区精品性色超碰| 亚洲免费在线看| 麻豆91在线播放免费| 99麻豆久久久国产精品免费| 欧美一区二区三区电影| 国产精品久久免费看| 日韩高清在线一区| 91亚洲精品乱码久久久久久蜜桃| 日韩一区二区在线看| 亚洲视频免费在线| 久久精品国产亚洲aⅴ| 91高清视频免费看| 久久精品视频一区二区三区| 视频一区在线播放| www.视频一区| 日韩你懂的在线观看| 亚洲精品一卡二卡| 国产福利精品一区二区| 51精品视频一区二区三区| 国产精品久久久久久久蜜臀| 美国三级日本三级久久99| 欧日韩精品视频| 国产精品久久看| 久久99精品久久久久久久久久久久 | 日本女人一区二区三区| 色婷婷综合久久久| 久久久午夜精品| 婷婷久久综合九色综合绿巨人| 99re免费视频精品全部| 久久嫩草精品久久久精品| 日韩福利电影在线观看| 欧美性猛交xxxx乱大交退制版| 国产偷国产偷亚洲高清人白洁| 美洲天堂一区二卡三卡四卡视频 | 97精品国产露脸对白| 久久网这里都是精品| 欧美aa在线视频| 91精品国产综合久久福利软件| 亚洲伊人伊色伊影伊综合网| 色综合咪咪久久| 亚洲欧美另类小说视频| 99在线视频精品| 国产精品不卡在线观看| 成人午夜免费av| 国产清纯白嫩初高生在线观看91| 精品一区二区综合| 欧美精品一区二区三区蜜桃| 男女性色大片免费观看一区二区| 在线成人午夜影院| 日韩专区欧美专区| 9191久久久久久久久久久| 亚洲福利视频一区| 欧美日韩精品欧美日韩精品一 | 青青草国产精品97视觉盛宴| 91精品国产色综合久久久蜜香臀| 亚洲成人动漫在线免费观看| 欧美情侣在线播放| 午夜精品久久久久久久99樱桃| 欧美系列日韩一区| 日本韩国一区二区| 亚洲一区二区美女| 欧美系列一区二区| 日韩中文字幕区一区有砖一区| 欧美精品粉嫩高潮一区二区| 日韩av在线播放中文字幕| 日韩欧美综合一区| 国产乱国产乱300精品| 国产欧美日韩精品一区| 99re这里都是精品| 亚洲一级二级三级在线免费观看| 欧美日韩免费一区二区三区视频| 日韩成人一级片| 精品免费国产二区三区| 国产高清精品久久久久| 亚洲欧洲另类国产综合| 欧美视频自拍偷拍| 日本欧美大码aⅴ在线播放| 久久亚洲一级片| 成人毛片视频在线观看| 亚洲美女视频在线| 欧美日韩一区二区三区高清| 免费精品视频在线| 久久婷婷成人综合色| 91在线云播放| 亚洲国产日韩精品| 日韩欧美成人激情| 国产超碰在线一区| 亚洲综合色噜噜狠狠| 精品欧美乱码久久久久久 | 亚洲综合小说图片| 日韩免费视频一区二区| 成人av在线观| 亚洲高清不卡在线观看| 久久人人爽爽爽人久久久| 99国产精品99久久久久久| 天天影视涩香欲综合网 | 国产日韩亚洲欧美综合| 在线免费观看日本一区| 久久国产精品无码网站| 亚洲色欲色欲www| 日韩精品一区二区三区蜜臀| 成人免费高清在线| 日韩1区2区3区| 欧美激情艳妇裸体舞| 欧美日韩国产区一| 国产不卡视频在线观看| 日韩高清国产一区在线| 日本一区二区成人在线| 欧美另类z0zxhd电影| 国产成a人亚洲精| 日韩va亚洲va欧美va久久| 国产精品美女www爽爽爽| 777久久久精品| 95精品视频在线| 国产精品伊人色| 视频一区免费在线观看| 中文字幕不卡在线观看| 日韩你懂的电影在线观看| 在线精品视频一区二区三四| 国产精品一二三四| 亚洲成人av一区二区三区| 中文字幕制服丝袜成人av| 欧美一卡2卡3卡4卡| 91官网在线观看| av亚洲精华国产精华|