亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? nteventlog.cpp

?? log4j的源碼
?? CPP
字號(hào):
/* * Copyright 1999-2005 The Apache Software Foundation. *  * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *  *      http://www.apache.org/licenses/LICENSE-2.0 *  * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */#ifndef NtEventLogAppender_h#define NtEventLogAppender_h#ifdef __GNUC__typedef long long __int64;#endif#include "org_apache_log4j_Priority.h"#include "org_apache_log4j_nt_NTEventLogAppender.h"#include <windows.h>// Borrowed unabashedly from the JNI Programmer's Guidevoid JNU_ThrowByName(JNIEnv *env, const char *name, const char *msg) {  jclass classForName = env->FindClass(name);  // If cls is null, an exception has already been thrown.  if (classForName != (jclass)0) {    env->ThrowNew(classForName, msg);  }  // cleanup  env->DeleteLocalRef(classForName);  return;}// Borrowed unabashedly from the JNI Programmer's Guidechar *JNU_GetStringNativeChars(JNIEnv *env, jstring jstr) {  static jmethodID midStringGetBytes = 0;  jbyteArray bytes = 0;  jthrowable exc;  char *nstr = 0;    //if (env->EnsureLocalCapacity(2) < 0) {  // out of memory  //return 0;  //}  if (midStringGetBytes == 0) {    // Lookup and cache the String.getBytes() method id.    jclass stringClass = env->FindClass("java/lang/String");    if (stringClass == 0) {      // An exception will have been thrown.      return 0;    }    midStringGetBytes = env->GetMethodID(stringClass, "getBytes", "()[B");    env->DeleteLocalRef(stringClass);    if (midStringGetBytes == 0) {      // An exception will have been thrown.      return 0;    }  }  bytes = (jbyteArray)env->CallObjectMethod(jstr, midStringGetBytes);  exc = env->ExceptionOccurred();  if (exc == 0) {    // Attempt to malloc enough room for the length of the Java    // string plus one byte for the 0-terminator.    jint len = env->GetArrayLength(bytes);    nstr = (char *)malloc(len + 1);    if (nstr == 0) {      // malloc failed -- throw an OutOfMemoryError      JNU_ThrowByName(env, "java/lang/OutOfMemoryError", 0);      env->DeleteLocalRef(bytes);      return 0;    }    // copy to the malloc'd array and 0-terminate    env->GetByteArrayRegion(bytes, 0, len, (jbyte *)nstr);    nstr[len] = 0;  } else {    // cleanup    env->DeleteLocalRef(exc);  }  // cleanup  env->DeleteLocalRef(bytes);  return nstr;}/* * Convert log4j Priority to an EventLog category. Each category is * backed by a message resource so that proper category names will * be displayed in the NT Event Viewer. */WORD getCategory(jint priority) {  // Priority values map directly to EventLog category values  return (WORD)(priority + 1);}/* * Convert log4j Priority to an EventLog type. The log4j package * supports 8 defined priorites, but the NT EventLog only knows * 3 event types of interest to us: ERROR, WARNING, and INFO. */WORD getType(jint priority) {  WORD ret_val;    switch (priority) {  case org_apache_log4j_Priority_FATAL_INT:  case org_apache_log4j_Priority_ERROR_INT:    ret_val = EVENTLOG_ERROR_TYPE;    break;  case org_apache_log4j_Priority_WARN_INT:    ret_val = EVENTLOG_WARNING_TYPE;    break;  case org_apache_log4j_Priority_INFO_INT:  case org_apache_log4j_Priority_DEBUG_INT:  default:    ret_val = EVENTLOG_INFORMATION_TYPE;    break;  }  return ret_val;}HKEY regGetKey(TCHAR *subkey, DWORD *disposition) {  HKEY hkey = 0;  RegCreateKeyEx(HKEY_LOCAL_MACHINE, subkey, 0, NULL, 		 REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, 		 &hkey, disposition);  return hkey;}void regSetString(HKEY hkey, TCHAR *name, TCHAR *value) {  RegSetValueEx(hkey, name, 0, REG_SZ, (LPBYTE)value, lstrlen(value) + sizeof(TCHAR));}void regSetDword(HKEY hkey, TCHAR *name, DWORD value) {  RegSetValueEx(hkey, name, 0, REG_DWORD, (LPBYTE)&value, sizeof(DWORD));}/* * Add this source with appropriate configuration keys to the registry. */void addRegistryInfo(char *source) {  const TCHAR *prefix = "SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\";  DWORD disposition;  HKEY hkey = 0;  TCHAR subkey[256];    lstrcpy(subkey, prefix);  lstrcat(subkey, source);  hkey = regGetKey(subkey, &disposition);  if (disposition == REG_CREATED_NEW_KEY) {    regSetString(hkey, "EventMessageFile", "NTEventLogAppender.dll");    regSetString(hkey, "CategoryMessageFile", "NTEventLogAppender.dll");    regSetDword(hkey, "TypesSupported", (DWORD)7);    regSetDword(hkey, "CategoryCount", (DWORD)8);  }	//RegSetValueEx(hkey, "EventMessageFile", 0, REG_SZ, (LPBYTE)dllname, lstrlen(dllname));	//RegSetValueEx(hkey, "CategoryMessageFile", 0, REG_SZ, (LPBYTE)dllname, lstrlen(dllname));	//RegSetValueEx(hkey, "TypesSupported", 0, REG_DWORD, (LPBYTE)&whichTypes, sizeof(DWORD));	//RegSetValueEx(hkey, "CategoryCount", 0, REG_DWORD, (LPBYTE)&numCategories, sizeof(DWORD));  RegCloseKey(hkey);  return;}/* * Class:     org.apache.log4j.nt.NTEventLogAppender * Method:    registerEventSource * Signature: (Ljava/lang/String;Ljava/lang/String;)I */JNIEXPORT jint JNICALL Java_org_apache_log4j_nt_NTEventLogAppender_registerEventSource(   JNIEnv *env, jobject java_this, jstring server, jstring source) {    char *nserver = 0;  char *nsource = 0;  if (server != 0) {    nserver = JNU_GetStringNativeChars(env, server);  }  if (source != 0) {    nsource = JNU_GetStringNativeChars(env, source);  }  addRegistryInfo(nsource);  jint handle = (jint)RegisterEventSource(nserver, nsource);  free((void *)nserver);  free((void *)nsource);  return handle;}/* * Class:     org_apache_log4j_nt_NTEventLogAppender * Method:    reportEvent * Signature: (ILjava/lang/String;I)V */JNIEXPORT void JNICALL Java_org_apache_log4j_nt_NTEventLogAppender_reportEvent(   JNIEnv *env, jobject java_this, jint handle, jstring jstr, jint priority) {    jboolean localHandle = JNI_FALSE;  if (handle == 0) {    // Client didn't give us a handle so make a local one.    handle = (jint)RegisterEventSource(NULL, "Log4j");    localHandle = JNI_TRUE;  }    // convert Java String to character array  const int numStrings = 1;  LPCTSTR array[numStrings];  char *nstr = JNU_GetStringNativeChars(env, jstr);  array[0] = nstr;    // This is the only message supported by the package. It is backed by  // a message resource which consists of just '%1' which is replaced  // by the string we just created.  const DWORD messageID = 0x1000;  ReportEvent((HANDLE)handle, getType(priority), 	      getCategory(priority), 	      messageID, NULL, 1, 0, array, NULL);    free((void *)nstr);  if (localHandle == JNI_TRUE) {    // Created the handle here so free it here too.    DeregisterEventSource((HANDLE)handle);  }  return;}/* * Class:     org_apache_log4j_nt_NTEventLogAppender * Method:    deregisterEventSource * Signature: (I)V */JNIEXPORT void JNICALL Java_org_apache_log4j_nt_NTEventLogAppender_deregisterEventSource(JNIEnv *env, jobject java_this, jint handle){  DeregisterEventSource((HANDLE)handle);}#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品综合在线| 五月天激情综合| 欧美日韩国产成人在线91| 国产一区二区三区免费看| 亚洲五码中文字幕| 国产欧美日韩中文久久| 欧美高清视频一二三区| 99综合影院在线| 国产一区二区在线影院| 午夜婷婷国产麻豆精品| 国产精品久久久久久久岛一牛影视| 91精品国产综合久久久久久久久久 | 欧美v日韩v国产v| 欧美日韩一区高清| 成av人片一区二区| 国产一区二区三区黄视频| 亚洲va欧美va人人爽| 一区在线观看视频| 国产日产欧产精品推荐色| 欧美一卡二卡在线观看| 欧美色手机在线观看| 91在线视频免费91| 国产成人精品免费看| 国内精品自线一区二区三区视频| 午夜欧美一区二区三区在线播放| 亚洲精品免费看| 综合在线观看色| 国产精品理论片在线观看| 久久噜噜亚洲综合| www一区二区| 欧美va天堂va视频va在线| 日韩西西人体444www| 欧美日韩dvd在线观看| 欧洲一区在线观看| 在线日韩av片| 欧美无人高清视频在线观看| 在线免费av一区| 色综合天天综合网天天狠天天| 97久久超碰精品国产| 97国产一区二区| 91视频你懂的| 欧美色老头old∨ideo| 在线日韩av片| 欧美高清你懂得| 欧美一级精品大片| 欧美精品一区二区三区高清aⅴ| 欧美xxxxxxxx| 欧美国产精品一区| 亚洲免费观看高清完整版在线观看| 中文字幕在线一区| 一区二区三区在线视频免费观看| 亚洲午夜视频在线观看| 亚洲18色成人| 久草精品在线观看| 国产成人综合网| 91免费看视频| 欧美男人的天堂一二区| 日韩一区二区三区视频| 欧美精品一区二区三区高清aⅴ| 久久精品欧美一区二区三区不卡 | 中文字幕制服丝袜成人av | 国产高清视频一区| 成人高清视频免费观看| 91黄色激情网站| 91精品国产高清一区二区三区| 日韩免费一区二区三区在线播放| 欧美精品一区二区三| 亚洲同性gay激情无套| 午夜精品成人在线| 国产剧情在线观看一区二区| av动漫一区二区| 欧美日韩国产影片| 国产亚洲午夜高清国产拍精品| 综合亚洲深深色噜噜狠狠网站| 午夜精品久久久久久久蜜桃app| 精品无码三级在线观看视频 | 欧美日韩高清不卡| 精品久久一二三区| 一区二区三区中文字幕精品精品| 日韩精品电影一区亚洲| 成人国产精品免费| 91精品国产综合久久精品麻豆| 国产人久久人人人人爽| 亚洲一区二区中文在线| 国产在线播放一区| 欧洲一区二区三区免费视频| 久久综合狠狠综合久久综合88 | 亚洲精品va在线观看| 蜜桃在线一区二区三区| 成人高清在线视频| 日韩一级精品视频在线观看| 国产精品国产a| 久久精品国产网站| 在线观看www91| 国产欧美视频一区二区三区| 日本午夜精品视频在线观看| 91香蕉国产在线观看软件| 日韩久久免费av| 亚洲高清一区二区三区| jizz一区二区| 久久女同精品一区二区| 天堂影院一区二区| 91久久精品国产91性色tv| 国产午夜亚洲精品羞羞网站| 天天操天天色综合| 91免费在线播放| 国产亚洲精品免费| 美日韩一级片在线观看| 欧美性感一类影片在线播放| 国产精品国产三级国产aⅴ入口 | 成人性生交大片免费看中文网站| 欧美久久久久久久久久| 亚洲视频网在线直播| 国产精品1区2区3区在线观看| 欧美一区二区三区免费观看视频| 夜夜揉揉日日人人青青一国产精品 | 一区二区三区电影在线播| 国产精品一级在线| 久久综合久色欧美综合狠狠| 日本aⅴ亚洲精品中文乱码| 欧洲精品在线观看| 亚洲天堂免费在线观看视频| 国产不卡高清在线观看视频| 精品国产乱码久久久久久免费| 五月综合激情网| 欧美二区在线观看| 亚洲午夜精品在线| 在线看不卡av| 亚洲激情av在线| 92国产精品观看| 亚洲欧洲无码一区二区三区| 国产丶欧美丶日本不卡视频| 久久精品在这里| 国产激情一区二区三区四区| 久久久国产一区二区三区四区小说 | 亚洲精品中文在线影院| 成人av网站在线观看| 国产精品久久久久7777按摩| 国产传媒欧美日韩成人| 欧美高清一级片在线观看| 成人aaaa免费全部观看| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 久久色在线观看| 国产精品亚洲午夜一区二区三区 | 亚洲免费视频中文字幕| 91毛片在线观看| 亚洲一区欧美一区| 欧美日韩一区二区三区免费看| 性做久久久久久免费观看欧美| 9191国产精品| 麻豆成人免费电影| 久久综合99re88久久爱| 国产91精品久久久久久久网曝门| 欧美韩国一区二区| 91国内精品野花午夜精品| 亚洲一线二线三线视频| 91精品在线一区二区| 国精产品一区一区三区mba视频| 欧美国产日韩在线观看| 91猫先生在线| 日本中文字幕一区二区视频| 久久综合久久鬼色| 97精品超碰一区二区三区| 亚洲成人手机在线| 精品久久久久久久人人人人传媒| 国产精品一二一区| 亚洲一区二区3| 欧美成人激情免费网| 成人动漫一区二区在线| 午夜欧美一区二区三区在线播放| 精品剧情在线观看| 日本乱人伦一区| 狠狠色狠狠色综合日日91app| 中文字幕在线一区二区三区| 欧美乱熟臀69xxxxxx| 国产一区二区三区不卡在线观看 | 国产精品小仙女| 亚洲精品成人在线| 欧美成人福利视频| 91麻豆精品在线观看| 久久精品国产99国产精品| 亚洲人成小说网站色在线| 日韩一卡二卡三卡| 日本久久电影网| 国产精品正在播放| 亚洲成人精品一区| 国产精品久久久一区麻豆最新章节| 欧美色涩在线第一页| 成人在线一区二区三区| 舔着乳尖日韩一区| 国产精品久久久久影院老司| 欧美一区二区三区啪啪| 99视频热这里只有精品免费| 美女看a上一区| 一区二区三区国产| 国产精品久久久久久久久晋中 | 欧美电影在线免费观看| 成人av网站在线| 韩国成人在线视频| 日韩制服丝袜先锋影音|