winamp/Src/Winamp/LazyServiceFactory.h
2024-09-24 14:54:57 +02:00

30 lines
1 KiB
C++

#pragma once
#include <api/service/waservicefactory.h>
#include <bfc/multipatch.h>
#include <api/syscb/callbacks/svccb.h>
enum {ServiceFactoryPatch, SysCallbackPatch };
class LazyServiceFactory : public MultiPatch<ServiceFactoryPatch, waServiceFactory>, public MultiPatch<SysCallbackPatch, SysCallback>
{
public:
LazyServiceFactory(FOURCC _service_type, GUID _service_guid, char *_service_name, char *_service_test_string, const wchar_t *_service_filename);
~LazyServiceFactory();
FOURCC GetServiceType();
const char *GetServiceName();
GUID GetGUID();
void *GetInterface(int global_lock);
int SupportNonLockingInterface();
int ReleaseInterface(void *ifc);
const char *GetTestString();
int ServiceNotify(int msg, intptr_t param1, intptr_t param2);
FOURCC GetEventType() { return SysCallback::SERVICE; }
int Notify(int msg, intptr_t param1, intptr_t param2);
protected:
RECVS_MULTIPATCH;
FOURCC service_type;
char *service_name;
GUID service_guid;
wchar_t service_filename[MAX_PATH];
char *service_test_string;
};