16 #define MAX_KEY_LEN 260
43 if (0 == lstrlen(strSubKey) ) {
48 LONG lreturn = RegOpenKeyEx( hkey
54 ASSERT( lreturn == ERROR_SUCCESS
55 || lreturn == ERROR_FILE_NOT_FOUND
56 || lreturn == ERROR_INVALID_HANDLE );
58 if( ERROR_SUCCESS == lreturn )
69 lreturn = RegEnumKeyEx( hk
78 ASSERT( lreturn == ERROR_SUCCESS
79 || lreturn == ERROR_NO_MORE_ITEMS );
81 if( ERROR_SUCCESS == lreturn )
92 RegDeleteKey(hkey, strSubKey);
112 , LPCWSTR szDescription
114 , LPCWSTR szThreadingModel = L
"Both"
115 , LPCWSTR szServerType = L
"InprocServer32" )
124 OLECHAR szCLSID[CHARS_IN_GUID];
125 HRESULT
hr = StringFromGUID2( clsServer
133 (
void)StringCchPrintf( achTemp,
NUMELMS(achTemp), TEXT(
"CLSID\\%ls"), szCLSID );
134 LONG lreturn = RegCreateKey( HKEY_CLASSES_ROOT
137 if( ERROR_SUCCESS != lreturn )
145 (
void)StringCchPrintf( achTemp,
NUMELMS(achTemp), TEXT(
"%ls"), szDescription );
146 lreturn = RegSetValue( hkey
151 if( ERROR_SUCCESS != lreturn )
163 (
void)StringCchPrintf( achTemp,
NUMELMS(achTemp), TEXT(
"%ls"), szServerType );
164 lreturn = RegCreateKey( hkey
167 if( ERROR_SUCCESS != lreturn )
175 (
void)StringCchPrintf( achTemp,
NUMELMS(achTemp), TEXT(
"%ls"), szFileName );
176 lreturn = RegSetValue( hsubkey
180 ,
sizeof(TCHAR) * (lstrlen(achTemp)+1) );
181 if( ERROR_SUCCESS != lreturn )
184 RegCloseKey( hsubkey );
188 (
void)StringCchPrintf( achTemp,
NUMELMS(achTemp), TEXT(
"%ls"), szThreadingModel );
189 lreturn = RegSetValueEx( hsubkey
190 , TEXT(
"ThreadingModel")
193 , (CONST BYTE *)achTemp
194 ,
sizeof(TCHAR) * (lstrlen(achTemp)+1) );
199 RegCloseKey( hsubkey );
203 return HRESULT_FROM_WIN32(lreturn);
224 OLECHAR szCLSID[CHARS_IN_GUID];
225 HRESULT
hr = StringFromGUID2( clsServer
231 (
void)StringCchPrintf( achBuffer,
NUMELMS(achBuffer), TEXT(
"CLSID\\%ls"), szCLSID );
253 , IFilterMapper2 * pIFM2
260 if(
NULL == psetupdata )
return S_FALSE;
268 HRESULT
hr = pIFM2->UnregisterFilter(
271 *psetupdata->
clsID );
278 rf2.dwMerit = psetupdata->
dwMerit;
279 rf2.cPins = psetupdata->
nPins;
280 rf2.rgPins = psetupdata->
lpPin;
285 hr = pIFM2->RegisterFilter(*psetupdata->
clsID
298 if( 0x80070002 ==
hr)
314 HRESULT
hr = NOERROR;
370 HRESULT
hr = NOERROR;
390 if( 0 == GetModuleFileNameA(
g_hInst
392 ,
sizeof(achTemp) ) )
395 DWORD dwerr = GetLastError();
399 MultiByteToWideChar( CP_ACP
402 , lstrlenA(achTemp) + 1
426 hr = CoInitialize( (LPVOID)
NULL );
432 IFilterMapper2 *pIFM2 = 0;
433 IFilterMapper *pIFM = 0;
434 hr = CoCreateInstance( CLSID_FilterMapper2
436 , CLSCTX_INPROC_SERVER
443 hr = CoCreateInstance(
446 CLSCTX_INPROC_SERVER,
494 CoFreeUnusedLibraries();
501 if( SUCCEEDED(
hr) && !bRegister )
534 HRESULT
hr = NOERROR;
546 if( 0 == GetModuleFileNameA(
g_hInst
548 ,
sizeof(achTemp) ) )
551 DWORD dwerr = GetLastError();
555 MultiByteToWideChar( CP_ACP
558 , lstrlenA(achTemp) + 1
589 , CLSCTX_INPROC_SERVER
591 ,
reinterpret_cast<void**
>(&psetup) );
594 hr = psetup->Unregister();
596 hr = psetup->Register();
601 if( (E_NOINTERFACE ==
hr )
602 || (VFW_E_NEED_OWNER ==
hr ) )
642 HRESULT
hr = NOERROR;
662 , CLSCTX_INPROC_SERVER
664 ,
reinterpret_cast<void**
>(&psetup) );
667 hr = psetup->Unregister();
672 if( (E_NOINTERFACE ==
hr )
673 || (VFW_E_NEED_OWNER ==
hr ) )