📄 cygwin_dll.h
字号:
/* cygwin_dll.h Copyright 1998, 1999, 2000, 2001 Red Hat, Inc.This file is part of Cygwin.This software is a copyrighted work licensed under the terms of theCygwin license. Please consult the file "CYGWIN_LICENSE" fordetails. */#ifndef __CYGWIN_CYGWIN_DLL_H__#define __CYGWIN_CYGWIN_DLL_H__#include <windows.h>#ifdef __cplusplus#define CDECL_BEGIN extern "C" {#define CDECL_END }#else#define CDECL_BEGIN#define CDECL_END#endif#define DECLARE_CYGWIN_DLL(Entry) \ \CDECL_BEGIN \ int WINAPI Entry (HINSTANCE h, DWORD reason, void *ptr); \ typedef int (*mainfunc) (int, char **, char **); \ extern int cygwin_attach_dll (HMODULE, mainfunc); \ extern void cygwin_detach_dll (DWORD); \CDECL_END \ \static HINSTANCE storedHandle; \static DWORD storedReason; \static void* storedPtr; \ \static int __dllMain (int a, char **b, char **c) \{ \ return Entry (storedHandle, storedReason, storedPtr); \} \ \static DWORD dll_index; \ \int WINAPI _cygwin_dll_entry (HINSTANCE h, DWORD reason, void *ptr) \{ \ int ret; \ ret = 1; \ \ switch (reason) \ { \ case DLL_PROCESS_ATTACH: \ { \ storedHandle = h; \ storedReason = reason; \ storedPtr = ptr; \ dll_index = cygwin_attach_dll (h, &__dllMain); \ if (dll_index == (DWORD) -1) \ ret = 0; \ } \ break; \ \ case DLL_PROCESS_DETACH: \ { \ ret = Entry (h, reason, ptr); \ if (ret) \ { \ cygwin_detach_dll (dll_index); \ dll_index = (DWORD) -1; \ } \ } \ break; \ \ case DLL_THREAD_ATTACH: \ { \ ret = Entry (h, reason, ptr); \ } \ break; \ \ case DLL_THREAD_DETACH: \ { \ ret = Entry (h, reason, ptr); \ } \ break; \ } \ return ret; \} \ \/* OBSOLETE: This is only provided for source level compatibility. */ \int WINAPI _cygwin_noncygwin_dll_entry (HINSTANCE h, DWORD reason, void *ptr) \{ \ return _cygwin_dll_entry (h, reason, ptr); \} \#endif /* __CYGWIN_CYGWIN_DLL_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -