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

📄 win32.c

📁 postgresql8.3.4源码,开源数据库
💻 C
字号:
/* $PostgreSQL: pgsql/src/backend/port/dynloader/win32.c,v 1.9 2006/12/04 22:23:40 momjian Exp $ */#include "postgres.h"char	   *dlerror(void);int			dlclose(void *handle);void	   *dlsym(void *handle, const char *symbol);void	   *dlopen(const char *path, int mode);static char last_dyn_error[512];static voidset_dl_error(void){	DWORD		err = GetLastError();	if (FormatMessage(FORMAT_MESSAGE_IGNORE_INSERTS |					  FORMAT_MESSAGE_FROM_SYSTEM,					  NULL,					  err,					  MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),					  last_dyn_error,					  sizeof(last_dyn_error) - 1,					  NULL) == 0)	{		snprintf(last_dyn_error, sizeof(last_dyn_error) - 1,				 "unknown error %lu", err);	}}char *dlerror(void){	if (last_dyn_error[0])		return last_dyn_error;	else		return NULL;}intdlclose(void *handle){	if (!FreeLibrary((HMODULE) handle))	{		set_dl_error();		return 1;	}	last_dyn_error[0] = 0;	return 0;}void *dlsym(void *handle, const char *symbol){	void	   *ptr;	ptr = GetProcAddress((HMODULE) handle, symbol);	if (!ptr)	{		set_dl_error();		return NULL;	}	last_dyn_error[0] = 0;	return ptr;}void *dlopen(const char *path, int mode){	HMODULE		h;	int			prevmode;	/* Disable popup error messages when loading DLLs */	prevmode = SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX);	h = LoadLibrary(path);	SetErrorMode(prevmode);	if (!h)	{		set_dl_error();		return NULL;	}	last_dyn_error[0] = 0;	return (void *) h;}

⌨️ 快捷键说明

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