summaryrefslogtreecommitdiffhomepage
path: root/dev/base/RunXPCOM/src/xpcom.cc
blob: 3fcfc7083f7ce8abba39668f25847661a84ea33c (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 Web Services Co
 */

#include <sci/sci_base.h>

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;
}