When you use
hModule = LoadLibrary("siJCLJOb.dll");
pFunc = (FIRERULE) GetProcAddress(hModule, "FireRule");
There is the option that LoadLibrary will fail, and if it does, the next line will cause an Access Violation.
Change it to:
hModule = LoadLibrary("siJCLJOb.dll");
if(hModule) pFunc = (FIRERULE) GetProcAddress(hModule, "FireRule");