⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 warmmcsnapin.cpp

📁 ftpserver very good sample
💻 CPP
字号:
//==============================================================;////  This source code is only intended as a supplement to existing Microsoft documentation. //// //////  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY//  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE//  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR//  PURPOSE.////  Copyright (C) 1999 - 2000 Microsoft Corporation.  All Rights Reserved.////////==============================================================;/* * Modified and adapted to War FTP Daemon Lite by Jarle Aase * Copyright 2001 by Jarle (jgaa) Aase * */#include "StdAfx.h"#include <objbase.h>#include <olectl.h>#include <initguid.h>#include "guids.h"#include "Registry.h"#include "WarMmcSnapin.h"#include "ClassFactory.h"#include "WarSmartPointer.h"#include "WarLogEngine.h"STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppvObj);STDAPI DllCanUnloadNow(void);// our globalsHINSTANCE g_hinst;ULONG g_uObjects = 0;ULONG g_uSrvLock = 0;#ifdef _AFXDLLclass MyApp : public CWinApp{public:    MyApp()    {        g_hinst = NULL;    }    BOOL InitInstance()    {        if (!g_hinst)            g_hinst = m_hInstance;        WarSmartPointer::Initialize();        return CWinApp::InitInstance();    }        WarLogEngine mLogEngine;};MyApp g_MyApp;#else // !_AFXDLLBOOL WINAPI DllMain(HINSTANCE hinstDLL,                     DWORD fdwReason,                     void* lpvReserved){    AFX_MANAGE_STATE(AfxGetStaticModuleState())    if (fdwReason == DLL_PROCESS_ATTACH) {        g_hinst = hinstDLL;    }        return TRUE;}#endif // !_AFXDLLSTDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppvObj){    AFX_MANAGE_STATE(AfxGetStaticModuleState())    if ((rclsid != CLSID_CComponentData) && (rclsid != CLSID_CSnapinAbout))        return CLASS_E_CLASSNOTAVAILABLE;            if (!ppvObj)        return E_FAIL;        *ppvObj = NULL;        // We can only hand out IUnknown and IClassFactory pointers.  Fail    // if they ask for anything else.    if (!IsEqualIID(riid, IID_IUnknown) && !IsEqualIID(riid, IID_IClassFactory))        return E_NOINTERFACE;        CClassFactory *pFactory = NULL;        // make the factory passing in the creation function for the type of object they want    if (rclsid == CLSID_CComponentData)        pFactory = new CClassFactory(CClassFactory::COMPONENT);    else if (rclsid == CLSID_CSnapinAbout)        pFactory = new CClassFactory(CClassFactory::ABOUT);        if (NULL == pFactory)        return E_OUTOFMEMORY;        HRESULT hr = pFactory->QueryInterface(riid, ppvObj);        return hr;}STDAPI DllCanUnloadNow(void){    AFX_MANAGE_STATE(AfxGetStaticModuleState())    if (g_uObjects == 0 && g_uSrvLock == 0)        return S_OK;    else        return S_FALSE;}////////////////////////////////////////////////////////////// Exported functions////// Server registration//STDAPI DllRegisterServer(){    AFX_MANAGE_STATE(AfxGetStaticModuleState())    HRESULT hr = SELFREG_E_CLASS;    _TCHAR szName[256];    _TCHAR szSnapInName[256];        LoadString(g_hinst, IDS_NAME, szName, sizeof(szName));    LoadString(g_hinst, IDS_SNAPINNAME, szSnapInName, sizeof(szSnapInName));        _TCHAR szAboutName[256];        LoadString(g_hinst, IDS_ABOUTNAME, szAboutName, sizeof(szAboutName));        // register our CoClasses    hr = RegisterServer(g_hinst,         CLSID_CComponentData,         szName);        if SUCCEEDED(hr)        hr = RegisterServer(g_hinst,         CLSID_CSnapinAbout,         szAboutName);        // place the registry information for SnapIns    if SUCCEEDED(hr)        hr = RegisterSnapin(CLSID_CComponentData, szSnapInName, CLSID_CSnapinAbout, FALSE);        return hr;}STDAPI DllUnregisterServer(){    AFX_MANAGE_STATE(AfxGetStaticModuleState())    if (UnregisterServer(CLSID_CComponentData) == S_OK)        return UnregisterSnapin(CLSID_CComponentData);    else        return E_FAIL;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -