//----------------------------------------
// scci を使ってリセットするだけのプログラム
//----------------------------------------
#include <Windows.h>
#include "scci.h"

// メイン関数
int WINAPI WinMain(
	HINSTANCE hInstance,      // 現在のインスタンスのハンドル
	HINSTANCE hPrevInstance,  // 以前のインスタンスのハンドル
	LPSTR lpCmdLine,          // コマンドライン
	int nCmdShow              // 表示状態
)
{
	char dllname[MAX_PATH] = "";

	if (strlen(lpCmdLine) > 0) {
		strcpy_s(dllname, sizeof(dllname), lpCmdLine);
	}
	else {
		strcpy_s(dllname, sizeof(dllname), "scci.dll");
	}

	HMODULE	hScci = NULL;

	// scci.dllの読込み
	hScci = ::LoadLibrary(dllname);
	if(hScci == NULL){
		::FreeLibrary(hScci);
		return GetLastError();
	}

	// サウンドインターフェースマネージャー取得用関数アドレス取得
	SCCIFUNC getSoundInterfaceManager  = (SCCIFUNC)(::GetProcAddress(hScci,"getSoundInterfaceManager"));
	if(getSoundInterfaceManager == NULL){
		::FreeLibrary(hScci);
		return GetLastError();
	}

	// サウンドインターフェースマネージャー取得
	SoundInterfaceManager *pManager = getSoundInterfaceManager();

	if (pManager) {

		// サウンドインターフェースマネージャーインスタンス初期化
		// 必ず最初に実行してください
		pManager->initializeInstance();

		// リセットを行う
		pManager->reset();

		// サウンドインターフェースマネージャーインスタンス開放
		// FreeLibraryを行う前に必ず呼び出ししてください
		pManager->releaseInstance();
	}

	// ＤＬＬの開放
	::FreeLibrary(hScci);

	return	0;
}

