sampdll.cpp

来自「window下的多线程编程参考书。值得一读」· C++ 代码 · 共 81 行

CPP
81
字号
//
// FILE: sampdll.cpp
//
// Copyright (c) 1997 by Aaron Michael Cohen and Mike Woodring
//
/////////////////////////////////////////////////////////////////////////

#include <windows.h>

#define EXPORT_SAMPDLL_API
#include "sampdll.h"

class CFoo
{
    public:
        CFoo( int iInstance )
            : m_iInstance(iInstance)
        {
            wsprintf(m_szMsgBuf, "CFoo::CFoo(%d)\n", m_iInstance);
            OutputDebugString(m_szMsgBuf);
        }

        ~CFoo()
        {
            wsprintf(m_szMsgBuf, "CFoo::~CFoo(%d)\n", m_iInstance);
            OutputDebugString(m_szMsgBuf);
        }
    
    private:
        int     m_iInstance;
        char    m_szMsgBuf[80];
};

CFoo    Foo(1);
CFoo    AnotherFoo(2);

BOOL WINAPI DllMain
(
    HANDLE  hInst, 
    ULONG   dwReason,
    LPVOID  lpReserved
)
{
    switch( dwReason )
    {
        case DLL_PROCESS_ATTACH:
            OutputDebugString("DLL_PROCESS_ATTACH\n");

            if( lpReserved )
            {   
                OutputDebugString("lpReserved != NULL\n");
            }
            else
            {
                OutputDebugString("lpReserved == NULL\n");
            }
        break;

        case DLL_THREAD_ATTACH:
            OutputDebugString("DLL_THREAD_ATTACH\n");
        break;

        case DLL_THREAD_DETACH:
            OutputDebugString("DLL_THREAD_DETACH\n");
        break;

        case DLL_PROCESS_DETACH:
            OutputDebugString("DLL_PROCESS_DETACH\n");
        break;
    }

    // Return FALSE to cause the load for sampdll.dll to fail.
    //
    return(TRUE);
}

SAMPDLL_API void __stdcall SayHello( void )
{
    OutputDebugString("Hello from sampdll.dll!\n");
}

⌨️ 快捷键说明

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