diff options
Diffstat (limited to 'AVStream/samplemft0/SampleMft0.cpp')
| -rw-r--r-- | AVStream/samplemft0/SampleMft0.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/AVStream/samplemft0/SampleMft0.cpp b/AVStream/samplemft0/SampleMft0.cpp new file mode 100644 index 00000000..997f05af --- /dev/null +++ b/AVStream/samplemft0/SampleMft0.cpp @@ -0,0 +1,83 @@ +// SampleMft0.cpp : Implementation of DLL Exports. + + +#include "stdafx.h" +#include "resource.h" +#include "SampleMft0.h" +#include "dllmain.h" + + +// Used to determine whether the DLL can be unloaded by OLE. +STDAPI DllCanUnloadNow(void) +{ +#ifdef _MERGE_PROXYSTUB + HRESULT hr = PrxDllCanUnloadNow(); + if (hr != S_OK) + return hr; +#endif + return _AtlModule.DllCanUnloadNow(); +} + +// Returns a class factory to create an object of the requested type. +STDAPI DllGetClassObject(_In_ REFCLSID rclsid, _In_ REFIID riid, _Outptr_ LPVOID* ppv) +{ +#ifdef _MERGE_PROXYSTUB + if (PrxDllGetClassObject(rclsid, riid, ppv) == S_OK) + return S_OK; +#endif + return _AtlModule.DllGetClassObject(rclsid, riid, ppv); +} + +// DllRegisterServer - Adds entries to the system registry. +STDAPI DllRegisterServer(void) +{ + // registers object, typelib and all interfaces in typelib + HRESULT hr = _AtlModule.DllRegisterServer(); +#ifdef _MERGE_PROXYSTUB + if (FAILED(hr)) + return hr; + hr = PrxDllRegisterServer(); +#endif + return hr; +} + +// DllUnregisterServer - Removes entries from the system registry. +STDAPI DllUnregisterServer(void) +{ + HRESULT hr = _AtlModule.DllUnregisterServer(); +#ifdef _MERGE_PROXYSTUB + if (FAILED(hr)) + return hr; + hr = PrxDllRegisterServer(); + if (FAILED(hr)) + return hr; + hr = PrxDllUnregisterServer(); +#endif + return hr; +} + +// DllInstall - Adds/Removes entries to the system registry per user per machine. +STDAPI DllInstall(BOOL bInstall, _In_opt_ LPCWSTR pszCmdLine) +{ + UNREFERENCED_PARAMETER(pszCmdLine); + HRESULT hr = E_FAIL; + static const wchar_t szUserSwitch[] = L"user"; + + + if (bInstall) + { + hr = DllRegisterServer(); + if (FAILED(hr)) + { + DllUnregisterServer(); + } + } + else + { + hr = DllUnregisterServer(); + } + + return hr; +} + + |
