/********************************Log**********************************/
#define LOGFILESIZE 10000000
#define LOGPATH L"\\Program Files\\protect.log"
#define ENDFLAG ("LastLine\r\n")
#define BYTES_NUM_ENDFLAG (sizeof(ENDFLAG) - 1) 
#define STR_MAX_LEN   1024
char g_szLogTemp[50= {0};
/********************************Log**********************************/

void PrintAutoSleepLog(LPCSTR szFormat)
{
    BYTE bZero[BYTES_NUM_ENDFLAG] 
= {0};
    
try{

        
char szBuffer[STR_MAX_LEN] = {0};
        UINT cbSize 
= sizeof(szBuffer);
        SYSTEMTIME st;
        GetLocalTime(
&st);
        
int nLogChars;
        
if(strlen(g_szLogTemp)>0)
        {
            nLogChars
=_snprintf(szBuffer, cbSize, "%d:%.2d:%.2d  %s %s"
                st.wHour, st.wMinute, st.wSecond, g_szLogTemp,szFormat);
            g_szLogTemp[
0= '\0';
        }
        
else                  
            nLogChars 
= _snprintf(szBuffer, cbSize, "%d:%.2d:%.2d  %s", st.wHour, st.wMinute, st.wSecond, szFormat);

        
if(nLogChars<0)
        {
            szBuffer[cbSize
-2= '\r';
            szBuffer[cbSize
-1= '\n';
            nLogChars 
= cbSize - 1;
        }

        DWORD dwPoint        
= 0;
        DWORD dwBuffsize     
= 0;
        DWORD dwFilesize     
= 0;

        HANDLE hC4Log 
= CreateFile(LOGPATH, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,
            OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
        
if(hC4Log != INVALID_HANDLE_VALUE)
        {

            dwFilesize 
= GetFileSize(hC4Log, NULL);
            
if(dwFilesize != 0 && dwFilesize != 0xFFFFFFFF)
            {
                dwPoint 
= SetFilePointer(hC4Log, -40, FILE_END);
                
if(0xFFFFFFFF != dwPoint)
                {
                    ReadFile(hC4Log, 
&dwPoint, sizeof(DWORD), &dwBuffsize, 0);
                    dwPoint 
= SetFilePointer(hC4Log, dwPoint - BYTES_NUM_ENDFLAG, 0, FILE_BEGIN);
                }

                
if(dwPoint > LOGFILESIZE)
                    dwPoint 
= SetFilePointer(hC4Log, 00, FILE_BEGIN);

            }        

            strcat(szBuffer, ENDFLAG);

            
long len = strlen(szBuffer);
            DWORD ltemp 
= 0;
            
if(dwPoint + len > LOGFILESIZE)
            {
                WriteFile(hC4Log, bZero, BYTES_NUM_ENDFLAG, 
&ltemp, NULL);
                dwPoint 
= SetFilePointer(hC4Log, 00, FILE_BEGIN);
            }

            WriteFile(hC4Log, szBuffer, len, 
&ltemp, NULL);

            dwPoint 
= SetFilePointer(hC4Log, 00, FILE_CURRENT);
            
if((dwPoint + 4>= dwFilesize)
                SetFilePointer(hC4Log, dwPoint, 
0, FILE_BEGIN);
            
else
                SetFilePointer(hC4Log, 
-40, FILE_END);
            WriteFile(hC4Log, 
&dwPoint, sizeof(DWORD), &ltemp, NULL);
            CloseHandle(hC4Log);
        }

    }
    
catch(...)
    {
        NKDbgPrintfW(TEXT(
"Exception!!!!!!!!!!!!!!!!!\r\n"));
    }
}

 

posted on 2010-01-08 16:14  Jackill  阅读(328)  评论(0编辑  收藏  举报