#pragma once

#include "ZOSAL.h"
#include <map>

typedef struct _ZMWSSAPI_DATA{
	HANDLE_FILE hOUT;
	HANDLE_FILE hIN;
	void* ENV;
} ZMWSSAPI_DATA;

typedef void (*ZMWSSAPIFN)(LPVOID);

class ZMWSSAPI
{
typedef std::map<std::string, ZMWSSAPIFN> ZMWSSAPI_FN_MAP;
private:
	HINSTANCE module;
	ZMWSSAPI_FN_MAP zmwssapi_fn_map;
public:
	ZMWSSAPI(void);
	~ZMWSSAPI(void);
	static ZMWSSAPIFN getFnPointer(std::string fnName);
	static HANDLE_THREAD Run (const char* fnName, ZMWSSAPI_DATA* args);
	static void DataCleanup (ZMWSSAPI_DATA* dataptr);
};
