Exemplo n.º 1
0
static boolean isAmigaDirectory (const char *const name)
{
	boolean result = FALSE;
	struct FileInfoBlock *const fib = xMalloc (1, struct FileInfoBlock);
	if (fib != NULL)
	{
		const BPTR flock = Lock ((UBYTE *) name, (long) ACCESS_READ);

		if (flock != (BPTR) NULL)
		{
			if (Examine (flock, fib))
				result = ((fib->fib_DirEntryType >= 0) ? TRUE : FALSE);
			UnLock (flock);
		}
		eFree (fib);
	}
	return result;
}
Exemplo n.º 2
0
void OMXPlayerAudio::Flush()
{
  Lock();
  LockDecoder();
  m_flush = true;
  while (!m_packets.empty())
  {
    OMXPacket *pkt = m_packets.front(); 
    m_packets.pop_front();
    OMXReader::FreePacket(pkt);
  }
  m_iCurrentPts = DVD_NOPTS_VALUE;
  m_cached_size = 0;
  if(m_decoder)
    m_decoder->Flush();
  UnLockDecoder();
  UnLock();
}
Exemplo n.º 3
0
BOOL TInifile::WriteIni()
{
	Lock();

	BOOL	ret = FALSE;
	HANDLE	hFile = ::CreateFileW(iniFile, GENERIC_WRITE, 0, 0, CREATE_ALWAYS,
									FILE_ATTRIBUTE_NORMAL, 0);

	if (hFile != INVALID_HANDLE_VALUE) {
#define MIN_INI_ALLOC (64 * 1024)
#define MAX_INI_ALLOC (10 * 1024 * 1024)
#define MIN_LINE_SIZE (2 * 1024)
		VBuf	vbuf(MIN_INI_ALLOC, MAX_INI_ALLOC);
		char	*p = (char *)vbuf.Buf();

		for (TIniSection *sec = TopObj(); sec && p; sec = NextObj(sec)) {
			TIniKey *key = sec->TopObj();
			int		len = 0;
			if (key) {
				if (sec->Name()) {
					len = sprintf(p, "[%s]\r\n", sec->Name());
					p = NextBuf(&vbuf, len, MIN_LINE_SIZE, MIN_INI_ALLOC);
				}
				while (key) {
					if (key->Key())	{
						len = sprintf(p, "%s=\"%s\"\r\n", key->Key(), key->Val());
						p = NextBuf(&vbuf, len, MIN_LINE_SIZE, MIN_INI_ALLOC);
					}
					else {
						len = sprintf(p, "%s\r\n", key->Val());
						p = NextBuf(&vbuf, len, MIN_LINE_SIZE, MIN_INI_ALLOC);
					}
					key = sec->NextObj(key);
				}
			}
		}
		DWORD	size;
		ret = ::WriteFile(hFile, vbuf.Buf(), (DWORD)vbuf.UsedSize(), &size, 0);
		::CloseHandle(hFile);
	}
	UnLock();

	return	ret;
}
Exemplo n.º 4
0
// Get disk info
LONG GetDiskInfo(char *device,struct InfoData *info)
{
	struct DevProc *proc;
	struct DosList *dos;
	LONG res=0;

	// Get device proc
	if (!(proc=GetDeviceProc(device,0)))
		return 0;

	// Send packet
#ifdef __AROS__
	if (((struct Library *)DOSBase)->lib_Version<50)
	{
		//res=Info(proc->dvp_Lock,info);
		BPTR lock;
		if ((lock=Lock(device,SHARED_LOCK)))
		{
			res=Info(lock,info);
			UnLock(lock);
		}
	}
	else
#endif
	res=DoPkt(proc->dvp_Port,ACTION_DISK_INFO,MKBADDR(info),0,0,0,0);

	// Clear "in use" flag to indicate formatting by default
	info->id_InUse=0;

	// Get doslist pointer
	if ((dos=DeviceFromHandler(proc->dvp_Port,NULL)))
	{
		// Invalid device?
		if (!GetDeviceUnit(dos->dol_misc.dol_handler.dol_Startup,NULL,NULL))
		{
			// Disk can't be formatted
			info->id_InUse=1;
		}
	}

	// Free device proc
	FreeDeviceProc(proc);
	return res;
}
Exemplo n.º 5
0
// Delete any temporary files
void delete_temp_files(struct DateStamp *last)
{
	struct AnchorPath *anchor;
	BPTR old,lock;

	// Lock T: and cd
	if ((lock=Lock("t:",ACCESS_READ)))
	{
		// CD to t:
		old=CurrentDir(lock);

		// Allocate an anchor
		if ((anchor=AllocVec(sizeof(struct AnchorPath),MEMF_CLEAR)))
		{
			short error;
			struct FileInfoBlock fibcopy;

			// See if any script files already exist
			error=MatchFirst("T:dopus#?tmp#?",anchor);
			while (!error)
			{
				// Copy fib
				fibcopy=anchor->ap_Info;

				// Get next
				error=MatchNext(anchor);

				// Check datestamp
				if (!last ||
					CompareDates(&fibcopy.fib_Date,last)>=0)
				{
					// Try to delete file
					DeleteFile(fibcopy.fib_FileName);
				}
			}

			// Cleanup anchor
			MatchEnd(anchor);
			FreeVec(anchor);
		}

		UnLock(CurrentDir(old));
	}
}
Exemplo n.º 6
0
TInt RSignalSession::OnDemandConnection()
	{
	TInt err = KErrNone;
	//On Demand connection
	if ( !iIsConnected )
		{
		Lock();
		if ( !iIsConnected )
			{
			err = Connect ();
			if ( KErrNone == err)
				{
				iIsConnected = ETrue;
				}
			}
		UnLock();
		}
	return err;
	}
Exemplo n.º 7
0
//自ストリームのサービス一覧を取得する
//戻り値:
// エラーコード
//引数:
// serviceList				[OUT]サービス情報のリスト
DWORD CBonCtrl::GetServiceListActual(
	vector<TS_SERVICE_INFO>* serviceList
	)
{
	if( Lock(L"GetServiceListActual") == FALSE ) return EpgNoData;

	DWORD _serviceListSize = 0;
	SERVICE_INFO* _serviceList = NULL;
	DWORD err = this->tsOut.GetServiceListActual(&_serviceListSize, &_serviceList);
	if( err == NO_ERR ){
		for( DWORD i=0; i<_serviceListSize; i++ ){
			TS_SERVICE_INFO item;
			item.ONID = _serviceList[i].original_network_id;
			item.TSID = _serviceList[i].transport_stream_id;
			item.SID = _serviceList[i].service_id;
			if( _serviceList[i].extInfo != NULL ){
				item.serviceType = _serviceList[i].extInfo->service_type;
				item.partialFlag = _serviceList[i].extInfo->partialReceptionFlag;
				if( _serviceList[i].extInfo->service_name != NULL ){
					item.serviceName = _serviceList[i].extInfo->service_name;
				}else{
					item.serviceName = L"";
				}
				if( _serviceList[i].extInfo->network_name != NULL ){
					item.networkName = _serviceList[i].extInfo->network_name;
				}else{
					item.networkName = L"";
				}
				item.remoteControlKeyID = _serviceList[i].extInfo->remote_control_key_id;
			}else{
				item.serviceType = 0;
				item.partialFlag = 0;
				item.serviceName = L"";
				item.networkName = L"";
				item.remoteControlKeyID = 0;
			}
			serviceList->push_back(item);
		}
	}

	UnLock();
	return err;
}
Exemplo n.º 8
0
void COMXCoreComponent::FlushInput()
{
    if(!m_handle)
        return;

    Lock();

    OMX_ERRORTYPE omx_err = OMX_ErrorNone;

    omx_err = OMX_SendCommand(m_handle, OMX_CommandFlush, m_input_port, NULL);

    if(omx_err != OMX_ErrorNone) {
        Logger::LogOut(LOG_LEVEL_ERROR, "COMXCoreComponent::FlushInput - Error on component %s omx_err(0x%08x)",
                m_componentName.c_str(), (int)omx_err);
    }
    WaitForCommand(OMX_CommandFlush, m_input_port);

    UnLock();
}
Exemplo n.º 9
0
//ロード中のBonDriverのファイル名を取得する(ロード成功しているかの判定)
//戻り値:
// TRUE(成功):FALSE(Openに失敗している)
//引数:
// bonDriverFile		[OUT]BonDriverのファイル名(NULL可)
BOOL CBonCtrl::GetOpenBonDriver(
	wstring* bonDriverFile
	)
{
	if( Lock(L"GetOpenBonDriver") == FALSE ) return ERR_FALSE;

	BOOL ret = FALSE;

	if( this->bonUtil.GetOpenBonDriverIndex() != -1 ){
		ret = TRUE;
		if( bonDriverFile != NULL ){
			*bonDriverFile = this->bonUtil.GetOpenBonDriverFileName();
		}
	}

	UnLock();

	return ret;
}
Exemplo n.º 10
0
bool OMXClock::OMXResume(bool lock /* = true */)
{
  if(m_omx_clock.GetComponent() == NULL)
    return false;

  if(m_pause)
  {
    if(lock)
      Lock();

    if (OMXSetSpeed(m_omx_speed, false, true))
      m_pause = false;

    m_last_media_time = 0.0f;
    if(lock)
      UnLock();
  }
  return m_pause == false;
}
Exemplo n.º 11
0
BOOL CEpgDBManager::ReloadEpgData()
{
	if( Lock() == FALSE ) return FALSE;

	BOOL ret = TRUE;
	if( this->loadThread == NULL ){
		//受信スレッド起動
		ClearEpgData();
		ResetEvent(this->loadStopEvent);
		this->loadThread = (HANDLE)_beginthreadex(NULL, 0, LoadThread, (LPVOID)this, CREATE_SUSPENDED, NULL);
		SetThreadPriority( this->loadThread, THREAD_PRIORITY_NORMAL );
		ResumeThread(this->loadThread);
	}else{
		ret = FALSE;
	}

	UnLock();
	return ret;
}
Exemplo n.º 12
0
inline s32 Factory::AddVIPC(VIPCDeviceParam & pParam)
{
    s32 nId = GetVIPCID();
    FactoryDeviceChangeData change;

    VDC_DEBUG( "%s GetDeviceID %d\n",__FUNCTION__, nId);

    Lock();
    pParam.m_Conf.data.conf.nId = nId;
    m_VIPCDeviceParamMap[nId] = pParam;

    m_Conf.AddVIPC(pParam.m_Conf, nId);
    UnLock();
    change.id = nId;
    change.type = FACTORY_VIPC_ADD;
    CallDeviceChange(change);
	
    return nId;
}
Exemplo n.º 13
0
/*
=================
Sys_SetBinaryPath
=================
*/
void Sys_SetBinaryPath(const char *path)
{
#ifdef __AROS__
	if (!strcmp(path, "."))
	{
		BPTR lock = Lock("PROGDIR:", ACCESS_READ);

		if (lock)
		{
			NameFromLock(lock, binaryPath, sizeof(binaryPath));
			UnLock(lock);
		}
	}
	else
#endif
	{
		Q_strncpyz(binaryPath, path, sizeof(binaryPath));
	}
}
Exemplo n.º 14
0
/* return malloc'd version of full pathname of orig_name */
int archdep_expand_path(char **return_path, const char *orig_name)
{
    BPTR lock;

    lock = Lock(orig_name, ACCESS_READ);
    if (lock) {
        char name[1024];
        LONG rc;

        rc = NameFromLock(lock, name, 1024);
        UnLock(lock);
        if (rc) {
            *return_path = lib_stralloc(name);
            return 0;
        }
    }
    *return_path = lib_stralloc(orig_name);
    return 0;
}
Exemplo n.º 15
0
//タイムシフト送信を開始する
//戻り値:
// TRUE(成功)、FALSE(失敗)
BOOL CTimeShiftUtil::StartTimeShift()
{
	if( Lock() == FALSE ) return FALSE;
	BOOL ret = TRUE;
	if( this->filePath.size() == 0 ){
		ret = FALSE;
	}else{
		if( this->readThread == NULL ){
			//受信スレッド起動
			ResetEvent(this->readStopEvent);
			this->readThread = (HANDLE)_beginthreadex(NULL, 0, ReadThread, (LPVOID)this, CREATE_SUSPENDED, NULL);
			SetThreadPriority( this->readThread, THREAD_PRIORITY_NORMAL );
			ResumeThread(this->readThread);
		}
	}

	UnLock();
	return ret;
}
Exemplo n.º 16
0
struct List *LoadBlankerEntries( STRPTR Path )
{
    struct FileInfoBlock *Blk;
    struct List *Entries = 0L;
    BlankerEntry *New;
    BPTR DirLock;
	
    if(!( Entries = AllocVec( sizeof( struct List ), MEMF_CLEAR )))
        return 0L;
    else
        NewList( Entries );
	
    NumBlankEntries = 0;
    
    if( DirLock = Lock( Path, ACCESS_READ ))
    {
        if(( Blk = AllocDosObject( DOS_FIB, 0L ))&&( Examine( DirLock, Blk )))
        {
            while( ExNext( DirLock, Blk ))
            {
                if(( Blk->fib_FileName )&&
                   ( FileIsModule( Path, Blk->fib_FileName )))
                {
                    if( New = NewBlankerEntry( Path, Blk->fib_FileName,
											  Blk->fib_Comment ))
                    {
                        New->be_Node.ln_Pri = 128 - ( New->be_Name[0] - 'a' );
                        Enqueue( Entries, ( struct Node * )New );
                        NumBlankEntries++;
                    }
                }
            }
            FreeDosObject( DOS_FIB, Blk );
        }
        UnLock( DirLock );
    }
    
    if( New = NewBlankerEntry( ":", "Random", "" ))
        AddTail( Entries, ( struct Node * )New );
	
    return Entries;
}
OMX_ERRORTYPE COMXCoreComponent::UseEGLImage(OMX_BUFFERHEADERTYPE** ppBufferHdr, OMX_U32 nPortIndex, OMX_PTR pAppPrivate, void* eglImage)
{
  if(!m_handle)
    return OMX_ErrorUndefined;

  Lock();

  OMX_ERRORTYPE omx_err;

  omx_err = OMX_UseEGLImage(m_handle, ppBufferHdr, nPortIndex, pAppPrivate, eglImage);
  if(omx_err != OMX_ErrorNone) 
  {
    CLog::Log(LOGERROR, "COMXCoreComponent::UseEGLImage - %s failed with omx_err(0x%x)\n", 
              m_componentName.c_str(), omx_err);
  }

  UnLock();

  return omx_err;
}
OMX_ERRORTYPE COMXCoreComponent::SendCommand(OMX_COMMANDTYPE cmd, OMX_U32 cmdParam, OMX_PTR cmdParamData)
{
  if(!m_handle)
    return OMX_ErrorUndefined;

  Lock();

  OMX_ERRORTYPE omx_err;

  omx_err = OMX_SendCommand(m_handle, cmd, cmdParam, cmdParamData);
  if(omx_err != OMX_ErrorNone) 
  {
    CLog::Log(LOGERROR, "COMXCoreComponent::SendCommand - %s failed with omx_err(0x%x)\n", 
              m_componentName.c_str(), omx_err);
  }

  UnLock();

  return omx_err;
}
OMX_ERRORTYPE COMXCoreComponent::SetParameter(OMX_INDEXTYPE paramIndex, OMX_PTR paramStruct)
{
  if(!m_handle)
    return OMX_ErrorUndefined;

  Lock();

  OMX_ERRORTYPE omx_err;

  omx_err = OMX_SetParameter(m_handle, paramIndex, paramStruct);
  if(omx_err != OMX_ErrorNone) 
  {
    CLog::Log(LOGERROR, "COMXCoreComponent::SetParameter - %s failed with omx_err(0x%x)\n", 
              m_componentName.c_str(), omx_err);
  }

  UnLock();

  return omx_err;
}
Exemplo n.º 20
0
 BOOL Device::StopHdfsRecord()
{
	if (m_param.m_Conf.data.conf.HdfsRecording == 1)
	{
	    return FALSE;
	}

	VDC_DEBUG( "%s Stop Record\n",__FUNCTION__);
	StopData();
	Lock();
	if (m_pHdfsRecord)
	{
		m_pVHdfsdb.FinishRecord(m_pHdfsRecord);
		delete m_pHdfsRecord;
		m_pHdfsRecord = NULL;
	}
	
	UnLock();
	return TRUE;
}
Exemplo n.º 21
0
void CBatManager::StartWork()
{
	if( Lock() == FALSE ) return ;

	this->workFlag = TRUE;
	if( this->batWorkThread != NULL ){
		if( ::WaitForSingleObject(this->batWorkThread, 0) == WAIT_OBJECT_0 ){
			CloseHandle(this->batWorkThread);
			this->batWorkThread = NULL;
		}
	}
	if( this->batWorkThread == NULL ){
		ResetEvent(this->batWorkStopEvent);
		this->batWorkThread = (HANDLE)_beginthreadex(NULL, 0, BatWorkThread, (LPVOID)this, CREATE_SUSPENDED, NULL);
		SetThreadPriority( this->batWorkThread, THREAD_PRIORITY_NORMAL );
		ResumeThread(this->batWorkThread);
	}

	UnLock();
}
Exemplo n.º 22
0
Arquivo: dir.c Projeto: 8l/vlink
char *open_dir(const char *dirname)
/* open a directory for examination */
{
  struct Dir *d;

  if (d = malloc(sizeof(struct Dir))) {
    strcpy(d->name,dirname);
    if (!strcmp(d->name,".")) {  /* current directory? */
      d->name[0] = 0;
    }
    if (d->lock = Lock(d->name,ACCESS_READ)) {
      if (Examine(d->lock,&(d->fib))) {
        return (char *)d;
      }
      UnLock(d->lock);
    }
    free(d);
  }
  return NULL;
}
Exemplo n.º 23
0
//ストリーミングを停止する
//戻り値:
// エラーコード
//引数:
// streamingID	[IN]ストリーミング識別ID
DWORD CTwitterMain::StopTweetStreaming(
	DWORD streamingID
	)
{
	if( Lock() == FALSE ) return 0;

	DWORD ret = NO_ERR;

	map<DWORD, STREAMING_INFO*>::iterator itr;
	itr = streamingList.find(streamingID);
	if( itr != streamingList.end() ){
		itr->second->httpUtil.CloseSession();
		SAFE_DELETE(itr->second);

		streamingList.erase(itr);
	}

	UnLock();
	return ret;
}
Exemplo n.º 24
0
//ロード中のBonDriverのファイル名を取得する(ロード成功しているかの判定)
//戻り値:
// TRUE(成功):FALSE(Openに失敗している)
//引数:
// bonDriverFile		[OUT]BonDriverのファイル名(NULL可)
BOOL CBonCtrl::GetOpenBonDriver(
	wstring* bonDriverFile
	)
{
	if( Lock(L"GetOpenBonDriver") == FALSE ) return ERR_FALSE;

	BOOL ret = FALSE;

	wstring strBonDriverFile = this->bonUtil.GetOpenBonDriverFileName();
	if( strBonDriverFile.empty() == false ){
		ret = TRUE;
		if( bonDriverFile != NULL ){
			*bonDriverFile = strBonDriverFile;
		}
	}

	UnLock();

	return ret;
}
Exemplo n.º 25
0
inline BOOL Factory::GetVmsById(VSCVmsDataItem &pParam, int nId)
{
	VSCVmsData VmsData;
	int id = -1;
	Lock();
	m_Conf.GetVmsData(VmsData);
	if (nId < CONF_VMS_NUM_MAX && nId > 0)
	{
		if (VmsData.data.conf.vms[nId].Used == 1)
		{
			memcpy(&pParam, &(VmsData.data.conf.vms[nId]), sizeof(VSCVmsDataItem));
		}
	}else
	{
		UnLock();
		return FALSE;
	}
	return TRUE;
	
}
Exemplo n.º 26
0
HOOKF(void, ami_menu_item_arexx_entries, APTR, window, struct IntuiMessage *)
{
	char *script = hook->h_Data;
	char *temp;
	struct gui_window_2 *gwin;
	GetAttr(WINDOW_UserData, (Object *)window, (ULONG *)&gwin);

	if(script) {
		if((temp = AllocVecTagList(1024, NULL))) {
			BPTR lock;
			if((lock = Lock(nsoption_charp(arexx_dir), SHARED_LOCK))) {
				DevNameFromLock(lock, temp, 1024, DN_FULLPATH);
				AddPart(temp, script, 1024);
				ami_arexx_execute(temp);
				FreeVec(temp);
				UnLock(lock);
			}
		}
	}
}
OMX_ERRORTYPE COMXCoreComponent::GetConfig(OMX_INDEXTYPE configIndex, OMX_PTR configStruct)
{
  if(!m_handle)
    return OMX_ErrorUndefined;

  Lock();

  OMX_ERRORTYPE omx_err;

  omx_err = OMX_GetConfig(m_handle, configIndex, configStruct);
  if(omx_err != OMX_ErrorNone) 
  {
    CLog::Log(LOGERROR, "COMXCoreComponent::GetConfig - %s failed with omx_err(0x%x)\n", 
              m_componentName.c_str(), omx_err);
  }

  UnLock();

  return omx_err;
}
Exemplo n.º 28
0
// Copy a file for the build operation
BOOL theme_copy_file(char *source,char *dest)
{
	BPTR in,out;
	D_S(struct FileInfoBlock, fib)
	
	
	BOOL ret=0;

	// See if source exists
	if ((in=Lock(source,ACCESS_READ)))
	{
		Examine(in,fib);
		UnLock(in);

		// Won't try to copy a directory
		if (fib->fib_DirEntryType>0) return 1; 
	}
	else return 0;

	// Open files
	if ((in=Open(source,MODE_OLDFILE)) &&
		(out=Open(dest,MODE_NEWFILE)))
	{
		char *buf;

		// Allocate buffer
		if ((buf=AllocVec(8192,0)))
		{
			long len;

			// Copy file
			while ((len=Read(in,buf,8192))>0)
				Write(out,buf,len);
			FreeVec(buf);
			ret=1;
		}
		Close(out);
	}
	if (in) Close(in);
	return ret;
}
Exemplo n.º 29
0
OMX_ERRORTYPE COMXCoreTunel::Flush()
{
  if(!m_DllOMXOpen)
    return OMX_ErrorUndefined;

  if(!m_src_component || !m_dst_component)
    return OMX_ErrorUndefined;

  Lock();

  OMX_ERRORTYPE omx_err = OMX_ErrorNone;
  if(m_src_component->GetComponent())
  {
    omx_err = OMX_SendCommand(m_src_component->GetComponent(), OMX_CommandFlush, m_src_port, NULL);
    if(omx_err != OMX_ErrorNone && omx_err != OMX_ErrorSameState)
    {
      CLog::Log(LOGERROR, "COMXCoreComponent::Flush - Error flush  port %d on component %s omx_err(0x%08x)", 
          m_src_port, m_src_component->GetName().c_str(), (int)omx_err);
    }
  }

  if(m_dst_component->GetComponent())
  {
    omx_err = OMX_SendCommand(m_dst_component->GetComponent(), OMX_CommandFlush, m_dst_port, NULL);
    if(omx_err != OMX_ErrorNone && omx_err != OMX_ErrorSameState)
    {
      CLog::Log(LOGERROR, "COMXCoreComponent::Flush - Error flush port %d on component %s omx_err(0x%08x)", 
          m_dst_port, m_dst_component->GetName().c_str(), (int)omx_err);
    }
  }

  if(m_src_component->GetComponent())
    omx_err = m_src_component->WaitForCommand(OMX_CommandFlush, m_src_port);

  if(m_dst_component->GetComponent())
    omx_err = m_dst_component->WaitForCommand(OMX_CommandFlush, m_dst_port);

  UnLock();

  return OMX_ErrorNone;
}
Exemplo n.º 30
0
void dmLogMessage(int level, const char* filename, int lineno, const char *format, ...)
{
	va_list ap;
	static char s_buffer[2048];
    int nWritten = 0;

    if(level < g_logLevel) 
        return;

	Lock(&g_LockLog);
    s_buffer[2047] = 0;
	va_start(ap, format);
    if(g_logType == LOG_DRIVER_SYSLOG)
    {
#ifdef WIN32
        FORMAT_STRING();
        OutputDebugString(s_buffer);
#elif defined(ANDROID)
        __android_log_vprint(g_logLevelNative[level], dmBaseName(filename), format, ap);
#elif defined(LINUX)
        vsyslog(g_logLevelNative[level], format, ap);
#elif defined(__IPHONE__)
        FORMAT_STRING();
        printf(s_buffer);
#endif
    }else if(g_logType == LOG_DRIVER_CONSOLE){
        FORMAT_STRING();
        printf(s_buffer);
    }else if (g_logType == LOG_DRIVER_MMAP){
        FORMAT_STRING();
        mmapLogWrite(s_buffer, nWritten);
    }else if(g_logType == LOG_DRIVER_FILE){
	    if(g_hLogFile != NULL){
            FORMAT_STRING();
            fwrite(s_buffer, sizeof(char), nWritten, g_hLogFile);
	        fflush(g_hLogFile);
        }
    }
    va_end(ap);
	UnLock(&g_LockLog);
}