port_entry.c
来自「OTP是开放电信平台的简称」· C语言 代码 · 共 60 行
C
60 行
/* ** This is an entry point for port programs,** it is used to set the console control handler of the process when** erlang process is run as a service.** Note that this entry point is only for ** Console programs, Windowing programs can just route the WM_QUERYENDSESSION** and WM_ENDSESSION to the default window procedure to aquire the same ** functionality.**** Copyright 1998 Ericsson Telecom AB**** Creator Patrik Nyblom <pan@erix.ericsson.se>**** Notes:** You would really not want to use ANY of the standard library in this ** routine, the standard library is not yet initiated...*/#include <windows.h>/* ** The runtime libraries startup routine in the Microsoft Visual C CRT*/extern void mainCRTStartup(void);/* ** A Console control handler that ignores the logoff events,** and lets the default handler take care of other events.*/ BOOL WINAPI erl_port_default_handler(DWORD ctrl){ if(ctrl == CTRL_LOGOFF_EVENT) return TRUE; return FALSE;}/*** This is the entry point, it takes no parameters and never returns.*/void erl_port_entry(void){ char buffer[2]; /* * We assume we're running as a service if this environment variable * is defined */ if(GetEnvironmentVariable("ERLSRV_SERVICE_NAME",buffer,(DWORD) 2)){#ifdef HARDDEBUG DWORD dummy; WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), "Setting handler\r\n",17,&dummy, NULL);#endif /* HARDDEBUG */ /* ** Actually set the control handler */ SetConsoleCtrlHandler(&erl_port_default_handler, TRUE); } /* ** Call the CRT's real startup routine. */ mainCRTStartup();}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?