Custom DSP plugin not showing up

I made a custom dsp plugin for FMOD, built it into a DLL and put it into my “AppData\Local\FMOD Studio\Plugins” folder… I tried with 32bit, 64bit DLLs, but nothing worked, it doesn’t show up under Plug-in Effects in FMOD Studio 1.10.09.

I followed the API documentation, and read through the fmod_gain.cpp for reference.

my code:

const int PARAM_BIT_DEPTH_MIN = 0;
const int PARAM_BIT_DEPTH_MAX = 24;
const int PARAM_BIT_DEPTH_DEFAULT = 8;
const int PARAM_BIT_RATE_MIN = 0;
const int PARAM_BIT_RATE_MAX = 192000;
const int PARAM_BIT_RATE_DEFAULT = 4096;

enum
{
	FMOD_BITCRUSHER_PARAM_BIT_RATE = 0,
	FMOD_BITCRUSHER_PARAM_BIT_DEPTH,
	FMOD_BITCRUSHER_PARAM_NUM
};

static bool						FMOD_BitCrusher_Running = false;
static FMOD_DSP_PARAMETER_DESC	p_bitRate;
static FMOD_DSP_PARAMETER_DESC	p_bitDepth;

FMOD_DSP_PARAMETER_DESC *FMOD_BitCrusher_dspparam[FMOD_BITCRUSHER_PARAM_NUM] =
{
	&p_bitRate,
	&p_bitDepth
};

[...]

FMOD_DSP_DESCRIPTION FMOD_BitCrusher_Desc =
{
	FMOD_PLUGIN_SDK_VERSION,
	"BitCrusher",    // name
	0x00010000,     // plug-in version
	1,              // number of input buffers to process
	1,              // number of output buffers to process
	FMOD_BitCrusher_dspcreate,
	FMOD_BitCrusher_dsprelease,
	FMOD_BitCrusher_dspreset,
#ifndef FMOD_BITCRUSHER_USEPROCESSCALLBACK
	FMOD_BitCrusher_dspread,
#else
	0,
#endif
#ifdef FMOD_BITCRUSHER_USEPROCESSCALLBACK
	FMOD_BitCrusher_dspprocess,
#else
	0,
#endif
	0,
	FMOD_BITCRUSHER_PARAM_NUM,
	FMOD_BitCrusher_dspparam,
	0,	// FMOD_BitCrusher_dspsetparamfloat,
	FMOD_BitCrusher_dspsetparamint,
	0,	// FMOD_BitCrusher_dspsetparambool,
	0,	// FMOD_BitCrusher_dspsetparamdata,
	0,	// FMOD_BitCrusher_dspgetparamfloat,
	FMOD_BitCrusher_dspgetparamint,
	0,	// FMOD_BitCrusher_dspgetparambool,
	0,	// FMOD_BitCrusher_dspgetparamdata,
	FMOD_BitCrusher_shouldiprocess,
	0,	// userdata
	FMOD_BitCrusher_sys_register,
	FMOD_BitCrusher_sys_deregister,
	FMOD_BitCrusher_sys_mix
};

extern "C"
{
	F_EXPORT FMOD_DSP_DESCRIPTION* F_CALL FMODGetDSPDescription()
	{
		static int bitDepth_values[] = { 1, 2, 4, 8, 16, 24 };
		static int bitRate_values[] = { 0, 1024, 2048, 4096, 8192, 16384, 22050, 44100 };

		static const char* bitDepth_enumeration[] =  { "1","2", "4", "8", "16", "24" };
		static const char* bitRate_enumeration[] = { "0", "1024", "2048", "4096", "8192", "16384", "22050", "44100" };

		FMOD_DSP_INIT_PARAMDESC_INT_ENUMERATED(
			p_bitDepth,
			"Bit Depth",
			"bit",
			"",
			4,
			bitDepth_enumeration);

		FMOD_DSP_INIT_PARAMDESC_INT_ENUMERATED(
			p_bitRate,
			"Bit Rate",
			"Samp/s",
			"",
			4096,
			bitRate_enumeration);
			
		return &FMOD_BitCrusher_Desc;
	}
}

Fixed by not using FMOD::System_Create() for getting sampling rate.
what I used instead:

FMOD_RESULT F_CALLBACK FMOD_BitCrusher_dspprocess(
	FMOD_DSP_STATE *dsp_state,
	unsigned int length,
	const FMOD_DSP_BUFFER_ARRAY *inbufferarray,
	FMOD_DSP_BUFFER_ARRAY *outbufferarray,
	FMOD_BOOL inputsidle,
	FMOD_DSP_PROCESS_OPERATION op)
{
	[...more code...]
	//This is what worked instead of FMOD::System_Create()...
	BitCrusher *state = (BitCrusher*)dsp_state->plugindata;
	dsp_state->functions->getsamplerate(dsp_state, &state->sampleRate);
	[...more code...]
}