mirror of
https://github.com/reactos/reactos.git
synced 2024-08-02 17:40:58 +00:00
[MSDVBNP]
- Dynamically register DVB network provider categories svn path=/trunk/; revision=46750
This commit is contained in:
parent
35ac4e1e92
commit
9b8546277a
|
@ -9,10 +9,14 @@
|
||||||
|
|
||||||
#include "precomp.h"
|
#include "precomp.h"
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
|
const GUID KSCATEGORY_BDA_NETWORK_PROVIDER = {0x71985f4b, 0x1ca1, 0x11d3, {0x9c, 0xc8, 0x0, 0xc0, 0x4f, 0x79, 0x71, 0xe0}};
|
||||||
|
#endif
|
||||||
|
|
||||||
static INTERFACE_TABLE InterfaceTable[] =
|
static INTERFACE_TABLE InterfaceTable[] =
|
||||||
{
|
{
|
||||||
{&CLSID_DVBTNetworkProvider, CNetworkProvider_fnConstructor},
|
{&CLSID_DVBTNetworkProvider, CNetworkProvider_fnConstructor, L"ReactOS DVBT Network Provider"},
|
||||||
{NULL, NULL}
|
{NULL, NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
|
@ -53,8 +57,19 @@ DllUnregisterServer(void)
|
||||||
HRESULT hr = S_OK;
|
HRESULT hr = S_OK;
|
||||||
HKEY hClass;
|
HKEY hClass;
|
||||||
|
|
||||||
|
|
||||||
|
hr = StringFromCLSID(KSCATEGORY_BDA_NETWORK_PROVIDER, &pStr);
|
||||||
|
if (FAILED(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
if (RegOpenKeyExW(HKEY_CLASSES_ROOT, L"CLSID", 0, KEY_SET_VALUE, &hClass) != ERROR_SUCCESS)
|
if (RegOpenKeyExW(HKEY_CLASSES_ROOT, L"CLSID", 0, KEY_SET_VALUE, &hClass) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
CoTaskMemFree(pStr);
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
RegDeleteKeyW(hClass, pStr);
|
||||||
|
CoTaskMemFree(pStr);
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -80,12 +95,35 @@ DllRegisterServer(void)
|
||||||
ULONG Index = 0;
|
ULONG Index = 0;
|
||||||
LPOLESTR pStr;
|
LPOLESTR pStr;
|
||||||
HRESULT hr = S_OK;
|
HRESULT hr = S_OK;
|
||||||
HKEY hClass, hKey, hSubKey;
|
HKEY hClass, hKey, hSubKey, hProvider, hInstance;
|
||||||
static LPCWSTR ModuleName = L"msdvbnp.ax";
|
static LPCWSTR ModuleName = L"msdvbnp.ax";
|
||||||
static LPCWSTR ThreadingModel = L"Both";
|
static LPCWSTR ThreadingModel = L"Both";
|
||||||
|
|
||||||
|
hr = StringFromCLSID(KSCATEGORY_BDA_NETWORK_PROVIDER, &pStr);
|
||||||
|
if (FAILED(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
if (RegOpenKeyExW(HKEY_CLASSES_ROOT, L"CLSID", 0, KEY_WRITE, &hClass) != ERROR_SUCCESS)
|
if (RegOpenKeyExW(HKEY_CLASSES_ROOT, L"CLSID", 0, KEY_WRITE, &hClass) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
CoTaskMemFree(pStr);
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (RegCreateKeyExW(hClass, pStr, 0, NULL, 0, KEY_WRITE, NULL, &hProvider, NULL) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
RegCloseKey(hClass);
|
||||||
|
CoTaskMemFree(pStr);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
CoTaskMemFree(pStr);
|
||||||
|
|
||||||
|
if (RegCreateKeyExW(hProvider, L"Instance", 0, NULL, 0, KEY_WRITE, NULL, &hInstance, NULL) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
RegCloseKey(hClass);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
RegCloseKey(hProvider);
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -104,11 +142,20 @@ DllRegisterServer(void)
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (RegCreateKeyExW(hInstance, InterfaceTable[Index].ProviderName, 0, 0, 0, KEY_WRITE, NULL, &hKey, 0) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
//FIXME filterdata
|
||||||
|
RegSetValueExW(hKey, L"FriendlyName", 0, REG_SZ, (const BYTE*)InterfaceTable[Index].ProviderName, (wcslen(InterfaceTable[Index].ProviderName) + 1) * sizeof(WCHAR));
|
||||||
|
RegSetValueExW(hKey, L"CLSID", 0, REG_SZ, (const BYTE*)pStr, (wcslen(pStr)+1) * sizeof(WCHAR));
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
}
|
||||||
|
|
||||||
CoTaskMemFree(pStr);
|
CoTaskMemFree(pStr);
|
||||||
Index++;
|
Index++;
|
||||||
}while(InterfaceTable[Index].lpfnCI != 0);
|
}while(InterfaceTable[Index].lpfnCI != 0);
|
||||||
|
|
||||||
RegCloseKey(hClass);
|
RegCloseKey(hClass);
|
||||||
|
RegCloseKey(hInstance);
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ typedef struct
|
||||||
{
|
{
|
||||||
const GUID* riid;
|
const GUID* riid;
|
||||||
LPFNCREATEINSTANCE lpfnCI;
|
LPFNCREATEINSTANCE lpfnCI;
|
||||||
|
LPCWSTR ProviderName;
|
||||||
} INTERFACE_TABLE;
|
} INTERFACE_TABLE;
|
||||||
|
|
||||||
/* classfactory.cpp */
|
/* classfactory.cpp */
|
||||||
|
|
Loading…
Reference in a new issue