summaryrefslogtreecommitdiffhomepage
path: root/dev/base/RunXPCOM/src/xpcom.cxx
blob: 7c6aa252627f015ae8c7c74fdab52457a1516416 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*
 * Copyright (c) 2024 ZKA Technologies
 */

#include <sci/sci_base.hxx>

typedef SInt32 (*RPCProcKind)(IUnknown*);

/**
 * @brief Main procedure for DLL runner.
 */
int main(int argc, char* argv[])
{
	if (argc < 4)
		return -1;

	auto mainDll = LdrOpenDLL(argv[1], argv[2]);

	IUnknown*	interface = (IUnknown*)LdrGetDLLProc(argv[3], mainDll);
	RPCProcKind dllRpc	  = (RPCProcKind)LdrGetDLLProc(argv[4], mainDll);

	if (!dllRpc)
		return -1;
	if (!interface)
		return -1;

	auto ret = dllRpc(interface);

	LdrCloseDLL(mainDll);

	return ret;
}