Initialversion

This commit is contained in:
2026-08-09 13:27:53 +02:00
commit eec4f52b5a
25 changed files with 2123 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
#include "ScriptHookPlugin.h"
#include <windows.h>
#include <cchannel.h>
#include <tsvirtualchannels.h>
#include <new>
BOOL APIENTRY DllMain(HMODULE module, DWORD reason, LPVOID reserved)
{
UNREFERENCED_PARAMETER(reserved);
if (reason == DLL_PROCESS_ATTACH)
{
DisableThreadLibraryCalls(module);
}
return TRUE;
}
// Der Prototyp ist laut Microsoft nicht in einem öffentlichen Header enthalten
// und muss exakt in dieser Form exportiert werden.
extern "C" __declspec(dllexport) HRESULT VCAPITYPE VirtualChannelGetInstance(
_In_ REFIID refiid,
_Inout_ ULONG* pNumObjs,
_Out_opt_ VOID** ppObjArray)
{
if (pNumObjs == nullptr)
{
return E_POINTER;
}
if (refiid != __uuidof(IWTSPlugin))
{
return E_NOINTERFACE;
}
constexpr ULONG requiredObjects = 1;
if (ppObjArray == nullptr)
{
*pNumObjs = requiredObjects;
return S_OK;
}
if (*pNumObjs < requiredObjects)
{
*pNumObjs = requiredObjects;
return HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
}
auto* plugin = new (std::nothrow) ScriptHookPlugin();
if (plugin == nullptr)
{
return E_OUTOFMEMORY;
}
ppObjArray[0] = static_cast<IWTSPlugin*>(plugin);
*pNumObjs = requiredObjects;
return S_OK;
}