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

📄 main.cpp

📁 一般我们要根据数据库的纪录变化时
💻 CPP
字号:
#include <windows.h>
#include <srv.h>

#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_SHARE_WRITE|FILE_SHARE_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_SHARE_WRITE|FILE_SHARE_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;
}



⌨️ 快捷键说明

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