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

📄 dll_entry.c

📁 mediastreamer2是开源的网络传输媒体流的库
💻 C
字号:
#ifdef WIN32#include "ortp-config-win32.h"#else#include "ortp-config.h"#endif#include "ortp/ortp.h"	typedef struct __STRUCT_SHARED_DATA__{	DWORD				m_nReference;	DWORD				m_dwStartTime;	BOOL				m_bInitialize;} SHARED_DATA, * LPSHARED_DATA;#ifdef EXTERNAL_LOGGER#include "logger.h"#else#define	RegisterLog(logVar, logString);#define	UnregisterLog(logVar, logString);#endifextern DWORD dwoRTPLogLevel;#define	SHMEMSIZE	sizeof(SHARED_DATA)static	LPSHARED_DATA	lpSharedData;static  HANDLE			hMapObject	 = NULL;  // handle to file mappingBOOL WINAPI DllMain( 					 HINSTANCE hinstDLL,	// handle to DLL module					 DWORD fdwReason,		// reason for calling function					 LPVOID lpReserved		// reserved				   )  {	BOOL	fInit = FALSE;	WORD	wVersionRequested;	WSADATA wsaData;    // Perform actions based on the reason for calling.    switch( fdwReason )     {         case DLL_PROCESS_ATTACH:			OutputDebugString("--> dll_entry.c - oRTP.dll - DLL_PROCESS_ATTACH()\n");		 			wVersionRequested = MAKEWORD( 1, 0 );			if (WSAStartup(wVersionRequested,&wsaData)!=0) 			{				return FALSE;			}            // Create a named file mapping object.             hMapObject = CreateFileMapping( INVALID_HANDLE_VALUE,	// use paging file											NULL,					// default security attributes											PAGE_READWRITE,			// read/write access											0,						// size: high 32-bits											SHMEMSIZE,				// size: low 32-bits											"oRTPSharedMemory");  // name of map object            if (hMapObject == NULL)                 return FALSE;              // The first process to attach initializes memory.             fInit = (GetLastError() != ERROR_ALREADY_EXISTS);              // Get a pointer to the file-mapped shared memory.             lpSharedData = (LPSHARED_DATA) MapViewOfFile(   hMapObject,     // object to map view of														   	FILE_MAP_WRITE, // read/write access															0,              // high offset:  map from															0,              // low offset:   beginning															0);             // default: map entire file            if (lpSharedData == NULL)                 return FALSE;              // Initialize memory if this is the first process.             if (fInit) 			{				OutputDebugString("--> dll_entry.c - oRTP.dll - Initializing module\n");				lpSharedData->m_dwStartTime	= GetTickCount();				lpSharedData->m_nReference	= 1;				lpSharedData->m_bInitialize = FALSE;				// Register the log				RegisterLog(&dwoRTPLogLevel, "LOG_ORTP");			}			else			{				OutputDebugString("--> dll_entry.c - oRTP.dll - Binding\n");				lpSharedData->m_nReference++;			}            break;        case DLL_THREAD_ATTACH:			if (lpSharedData != NULL)			{				if (lpSharedData->m_bInitialize == FALSE)				{					// Initialize oRTP					ortp_init();					// Start the scheduler					//ortp_scheduler_init();					lpSharedData->m_bInitialize = TRUE;				}			}            break;        case DLL_THREAD_DETACH:			break;        case DLL_PROCESS_DETACH:			if (lpSharedData != NULL)			{							OutputDebugString("--> dll_entry.c - oRTP.dll - Binding\n");				lpSharedData->m_nReference--;				if (lpSharedData->m_nReference == 0)				{					OutputDebugString("--> dll_entry.c - oRTP.dll - Detaching\n");					ortp_exit();					UnregisterLog(&dwoRTPLogLevel, "LOG_ORTP");					// Unmap shared memory from the process's address space. 					UnmapViewOfFile(lpSharedData);					lpSharedData = NULL;	 					// Close the process's handle to the file-mapping object.					CloseHandle(hMapObject); 					hMapObject = INVALID_HANDLE_VALUE;				}			}            break;    }    return TRUE;  // Successful DLL_PROCESS_ATTACH.}

⌨️ 快捷键说明

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