# Include // Add this. h file # Define XP_NOERROR 0 # Define XP_ERROR 1 # Ifndef _ DEBUG # Define _ DEBUG # Endif Char szFileName [MAX_PATH + 1]; Void WriteInfo (const char * str ); Extern "C" srvretcode winapi SetFileName (SRV_PROC * pSrvProc) { WriteInfo ("SetFileName start "); Int paramCount = srv_rpcparams (pSrvProc ); If (paramCount! = 1 ){ WriteInfo ("Param Err start "); Return XP_ERROR; } BYTE bType; Unsigned long cbMaxLen; Unsigned long cbActualLen; BOOL fNull; Int ret = srv_paraminfo (pSrvProc, 1, & bType, & cbMaxLen, & cbActualLen, NULL, & fNull ); If (cbActualLen ){ Zeromemory (szfilename, max_path + 1 ); Memcpy (szfilename, srv_paramdata (psrvproc, 1), cbactuallen ); Writeinfo ("set filename OK "); Return (xp_noerror ); } Else { Writeinfo ("set filename Param failed "); Return xp_error; } } Extern "C" srvretcode winapi addline (srv_proc * psrvproc) { Writeinfo ("addline start "); Int paramcount = srv_rpcparams (psrvproc ); If (paramcount! = 1 ){ Writeinfo ("addline Param Err "); Return xp_error; } Byte btype; Unsigned long cbmaxlen; Unsigned long cbactuallen; Bool fnull; Bool RT = false; Int ret = Srv_paraminfo (psrvproc, 1, & btype, & cbmaxlen, & cbactuallen, Null, & fnull ); If (cbactuallen ){ Int N; Char SRT [3] = {0x0d, 0x0a, 0 }; Char * c = new char [cbactuallen + 3]; If (! C) Return xp_error; Zeromemory (C, cbactuallen + 3 ); Memcpy (C, srv_paramdata (psrvproc, 1), cbactuallen ); Memcpy (C + cbactuallen, SRT, 3 ); Handle HF = createfile (szfilename, generic_write, file_pai_write | file_pai_read, null, Open_always, 0, null ); If (HF = invalid_handle_value ){ Writeinfo ("addline Create File Err "); Delete [] C; Return xp_error; } WriteInfo ("addline create file OK "); DWORD dwWt; N = strlen (c ); SetFilePointer (hf, 0, NULL, FILE_END ); If (WriteFile (hf, c, n, & dwWt, NULL) & dwWt = n) { WriteInfo ("addline write file OK "); Rt = true; } Delete [] c; CloseHandle (hf ); } Return rt? XP_NOERROR: XP_ERROR; } Inline void WriteInfo (const char * str ){ # Ifdef _ DEBUG Char srt [3] = {0x0d, 0x0a, 0 }; HANDLE hf = CreateFile ("c: // storeproc. log", GENERIC_WRITE, file_1__write | file_1__read, NULL, OPEN_ALWAYS, 0, NULL ); If (hf! = INVALID_HANDLE_VALUE ){ SetFilePointer (hf, 0, NULL, FILE_END ); DWORD dwWt; WriteFile (hf, str, strlen (str), & dwWt, NULL ); WriteFile (hf, srt, strlen (srt), & dwWt, NULL ); CloseHandle (hf ); } Else { MessageBox (NULL, "Write info err", "Message", MB_ OK | MB_ICONINFORMATION ); } # Endif } Bool winapi DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved) { Return TRUE; } |