Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
192
Src/Plugins/DSP/dsp_sps/dxi/PlugInApp.cpp
Normal file
192
Src/Plugins/DSP/dsp_sps/dxi/PlugInApp.cpp
Normal file
|
@ -0,0 +1,192 @@
|
|||
// PlugInApp.cpp : Defines the initialization routines for the DLL.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "PlugInApp.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE, ULONG, LPVOID);
|
||||
|
||||
BOOL WINAPI DllMain(HINSTANCE hInstance, ULONG ulReason, LPVOID pv)
|
||||
{
|
||||
return DllEntryPoint( hInstance, ulReason, pv );
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
LONG recursiveDeleteKey( HKEY hKeyParent, // Parent of key to delete
|
||||
const char* lpszKeyChild ) // Key to delete
|
||||
{
|
||||
// Open the child.
|
||||
HKEY hKeyChild ;
|
||||
LONG lRes = RegOpenKeyEx( hKeyParent, lpszKeyChild, 0, KEY_ALL_ACCESS, &hKeyChild );
|
||||
if (lRes != ERROR_SUCCESS)
|
||||
{
|
||||
return lRes;
|
||||
}
|
||||
|
||||
// Enumerate all of the decendents of this child.
|
||||
FILETIME time;
|
||||
char szBuffer[ 256 ];
|
||||
DWORD dwSize = 256;
|
||||
while (RegEnumKeyEx( hKeyChild, 0, szBuffer, &dwSize, NULL, NULL, NULL, &time ) == S_OK)
|
||||
{
|
||||
// Delete the decendents of this child.
|
||||
lRes = recursiveDeleteKey( hKeyChild, szBuffer );
|
||||
if (lRes != ERROR_SUCCESS)
|
||||
{
|
||||
// Cleanup before exiting.
|
||||
RegCloseKey( hKeyChild );
|
||||
return lRes;
|
||||
}
|
||||
dwSize = 256;
|
||||
}
|
||||
|
||||
// Close the child.
|
||||
RegCloseKey( hKeyChild );
|
||||
|
||||
// Delete this child.
|
||||
return RegDeleteKey( hKeyParent, lpszKeyChild );
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static const char* s_pszReg = "CakewalkPlugIns\\";
|
||||
|
||||
extern CFactoryTemplate g_Templates[];
|
||||
extern int g_cTemplates;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
STDAPI DllRegisterServer()
|
||||
{
|
||||
HKEY hKey = 0;
|
||||
char sz[ _MAX_PATH ];
|
||||
OLECHAR wsz[ _MAX_PATH ];
|
||||
char szCLSID[ 64 ];
|
||||
ITypeLib* pTypeLib = 0;
|
||||
int i = 0;
|
||||
HRESULT hr = E_FAIL;
|
||||
|
||||
// Do DirectShow registration
|
||||
hr = AMovieDllRegisterServer2( TRUE );
|
||||
if (FAILED( hr ))
|
||||
goto DONE;
|
||||
|
||||
// Get our full pathname, converting to multibyte
|
||||
GetModuleFileName( g_hInst, sz, sizeof sz );
|
||||
if (0 == MultiByteToWideChar( CP_ACP, 0, sz, _MAX_PATH, wsz, _MAX_PATH ))
|
||||
goto DONE;
|
||||
|
||||
// Iterate over all exported CLSIDs
|
||||
for (i = 0; i < g_cTemplates; i++)
|
||||
{
|
||||
CFactoryTemplate* pT = &g_Templates[ i ];
|
||||
|
||||
if (NULL != pT->m_pAMovieSetup_Filter)
|
||||
{
|
||||
// For backwards compatability, instantiate all servers and get hold of
|
||||
// IAMovieSetup (if implemented) and call IAMovieSetup.Register() method
|
||||
if (NULL != pT->m_lpfnNew)
|
||||
{
|
||||
IAMovieSetup* pSetup = 0;
|
||||
if (SUCCEEDED( CoCreateInstance( *(pT->m_ClsID), 0, CLSCTX_INPROC_SERVER,
|
||||
IID_IAMovieSetup, (void**)&pSetup ) ))
|
||||
{
|
||||
pSetup->Register();
|
||||
pSetup->Release();
|
||||
}
|
||||
}
|
||||
|
||||
// Convert the CLSID to an ANSI string
|
||||
StringFromGUID2( *(pT->m_ClsID), wsz, sizeof wsz );
|
||||
if (0 == WideCharToMultiByte( CP_ACP, 0, wsz, -1, szCLSID, sizeof szCLSID, NULL, NULL ))
|
||||
goto DONE;
|
||||
|
||||
// Add {...} to HKEY_CLASSES_ROOT\<s_pszReg>
|
||||
strcpy( sz, s_pszReg );
|
||||
strcat( sz, szCLSID );
|
||||
if (ERROR_SUCCESS != RegCreateKey( HKEY_CLASSES_ROOT, sz, &hKey ))
|
||||
goto DONE;
|
||||
|
||||
// {...}\Description = <description text>
|
||||
if (0 == WideCharToMultiByte( CP_ACP, 0, pT->m_Name, -1, sz, sizeof sz, NULL, NULL ))
|
||||
goto DONE;
|
||||
RegSetValueEx( hKey, "Description", 0, REG_SZ, (BYTE*)sz, strlen(sz) );
|
||||
|
||||
// Written for backwards compatability with SONAR 1.x and Pro Audio:
|
||||
// {...}\HelpFilePath = ""
|
||||
// {...}\HelpFileTopic = ""
|
||||
*sz = 0;
|
||||
RegSetValueEx( hKey, "HelpFilePath", 0, REG_SZ, (BYTE*)sz, 1 );
|
||||
RegSetValueEx( hKey, "HelpFileTopic", 0, REG_SZ, (BYTE*)sz, 1 );
|
||||
|
||||
RegCloseKey( hKey );
|
||||
hKey = 0;
|
||||
}
|
||||
}
|
||||
|
||||
hr = S_OK;
|
||||
|
||||
DONE:
|
||||
|
||||
|
||||
if (hKey)
|
||||
RegCloseKey( hKey );
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
STDAPI DllUnregisterServer()
|
||||
{
|
||||
char sz[ _MAX_PATH ];
|
||||
OLECHAR wsz[ _MAX_PATH ];
|
||||
char szCLSID[ 64 ];
|
||||
int i = 0;
|
||||
HRESULT hr = E_FAIL;
|
||||
|
||||
// Do DirectShow unregistration
|
||||
hr = AMovieDllRegisterServer2( FALSE );
|
||||
if (FAILED( hr ))
|
||||
goto DONE;
|
||||
|
||||
// Iterate over all exported CLSIDs
|
||||
for (i = 0; i < g_cTemplates; i++)
|
||||
{
|
||||
CFactoryTemplate* pT = &g_Templates[ i ];
|
||||
|
||||
// For backwards compatability, instantiate all servers and get hold of
|
||||
// IAMovieSetup (if implemented) and call IAMovieSetup.Register() method
|
||||
if (NULL != pT->m_lpfnNew)
|
||||
{
|
||||
IAMovieSetup* pSetup = 0;
|
||||
if (SUCCEEDED( CoCreateInstance( *(pT->m_ClsID), 0, CLSCTX_INPROC_SERVER,
|
||||
IID_IAMovieSetup, (void**)&pSetup ) ))
|
||||
{
|
||||
pSetup->Unregister();
|
||||
pSetup->Release();
|
||||
}
|
||||
}
|
||||
|
||||
// Convert the CLSID to an ANSI string
|
||||
StringFromGUID2( *(pT->m_ClsID), wsz, sizeof wsz );
|
||||
if (0 == WideCharToMultiByte( CP_ACP, 0, wsz, -1, szCLSID, sizeof szCLSID, NULL, NULL ))
|
||||
goto DONE;
|
||||
|
||||
// Delete HKEY_CLASSES_ROOT\<s_pszReg>
|
||||
strcpy( sz, s_pszReg );
|
||||
strcat( sz, szCLSID );
|
||||
recursiveDeleteKey( HKEY_CLASSES_ROOT, sz );
|
||||
}
|
||||
|
||||
hr = S_OK;
|
||||
|
||||
DONE:
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
Loading…
Add table
Add a link
Reference in a new issue