예제 #1
0
BOOL
WINAPI
myCreateProcessA(
    LPCSTR lpApplicationName,
    LPSTR lpCommandLine,
    LPSECURITY_ATTRIBUTES lpProcessAttributes,
    LPSECURITY_ATTRIBUTES lpThreadAttributes,
    BOOL bInheritHandles,
    DWORD dwCreationFlags,
    LPVOID lpEnvironment,
    LPCSTR lpCurrentDirectory,
    LPSTARTUPINFOA lpStartupInfo,
    LPPROCESS_INFORMATION lpProcessInformation)
{
	if (debugEventSocket)
	{
		_asm int 3;
		SOCKET s = debugEventSocket;
		TESTPROTOIN(0x12345678);
		TESTPROTOOUT(0x12345678);
		DWORD dwCode = DRPC_CREATE_PROCESS;
		S(dwCode);
		Szs(lpApplicationName);
		Szs(lpCommandLine);
//    Sq(lpProcessAttributes);
//    Sq(lpThreadAttributes);
		S(bInheritHandles);
		S(dwCreationFlags);
//TODO    Senv(lpEnvironment);
		Szs(lpCurrentDirectory);
		S(*lpStartupInfo);
	
		DWORD dwHandled;
		R(dwHandled);
		if (dwHandled)
		{
			DWORD dwRet = 0;
			R(dwRet); 

			PROCESS_INFORMATION info;
			R(info);
			if (lpProcessInformation)
				*lpProcessInformation = info;

			TESTPROTOIN(0xFEDCBA98);
			TESTPROTOOUT(0xFEDCBA98);
			return dwRet;
		}
		TESTPROTOIN(0xFEDCBA98);
		TESTPROTOOUT(0xFEDCBA98);
	}
	fprintf(log, "CreateProcess(%s, %s)\n", lpApplicationName, lpCommandLine);
	fflush(log);
	return oldCreateProcessA(lpApplicationName,
		lpCommandLine,
		lpProcessAttributes,
		lpThreadAttributes,
		bInheritHandles,
		dwCreationFlags,
		lpEnvironment,
		lpCurrentDirectory,
		lpStartupInfo,
		lpProcessInformation);
}
예제 #2
0
BEGIN_ENUM_BYTE(ParseStringTokenType)
AmPm,
Month,
Day,
Zone,
BcAd,
END_ENUM_BYTE()

const static SZS g_rgszs[] =
{
#define Szs(sz, val) { _u(sz), sizeof(_u(sz)) - 1, ParseStringTokenType::##szst, val }

    // bc and ad
#undef szst
#define szst BcAd
    Szs("bc", -1),
    Szs("b.c", -1),
    Szs("ad", +1),
    Szs("a.d", +1),

    // am and pm
#undef szst
#define szst AmPm
    Szs("am", -1),
    Szs("a.m", -1),
    Szs("pm", +1),
    Szs("p.m", +1),

    // time zones
#undef szst
#define szst Zone