summaryrefslogtreecommitdiff
path: root/wpd/WpdWudfSampleDriver/NetworkConfigFakeContent.h
diff options
context:
space:
mode:
authorDave Wilson <[email protected]>2015-03-17 19:50:07 -0700
committerDave Wilson <[email protected]>2015-03-17 19:50:07 -0700
commit97cf5197cf5b882b2c689d8dc2b555f2edf8f418 (patch)
tree46f3701832d70b420eb0fc0eb93261f9da45db3f /wpd/WpdWudfSampleDriver/NetworkConfigFakeContent.h
parentef1905bf1e8825bb31120dfb27e0daf3154d859a (diff)
Initial publish
Diffstat (limited to 'wpd/WpdWudfSampleDriver/NetworkConfigFakeContent.h')
-rw-r--r--wpd/WpdWudfSampleDriver/NetworkConfigFakeContent.h378
1 files changed, 378 insertions, 0 deletions
diff --git a/wpd/WpdWudfSampleDriver/NetworkConfigFakeContent.h b/wpd/WpdWudfSampleDriver/NetworkConfigFakeContent.h
new file mode 100644
index 00000000..e428e278
--- /dev/null
+++ b/wpd/WpdWudfSampleDriver/NetworkConfigFakeContent.h
@@ -0,0 +1,378 @@
+#include "NetworkConfigFakeContent.h.tmh"
+
+class NetworkConfigFakeContent : public FakeContent
+{
+public:
+ NetworkConfigFakeContent()
+ {
+ }
+
+ virtual ~NetworkConfigFakeContent()
+ {
+ }
+
+ virtual HRESULT GetSupportedProperties(_COM_Outptr_ IPortableDeviceKeyCollection** ppKeys)
+ {
+ HRESULT hr = S_OK;
+
+ if(ppKeys == NULL)
+ {
+ hr = E_POINTER;
+ CHECK_HR(hr, "Cannot have NULL collection parameter");
+ return hr;
+ }
+
+ *ppKeys = NULL;
+
+ if (SUCCEEDED(hr))
+ {
+ hr = AddSupportedProperties(WPD_FUNCTIONAL_CATEGORY_NETWORK_CONFIGURATION, ppKeys);
+ CHECK_HR(hr, "Failed to add additional properties for NetworkConfigFakeContent");
+ }
+ return hr;
+ }
+
+ virtual HRESULT GetAllValues(
+ _In_ IPortableDeviceValues* pStore)
+ {
+ HRESULT hr = S_OK;
+ HRESULT hrSetValue = S_OK;
+
+ if(pStore == NULL)
+ {
+ hr = E_POINTER;
+ CHECK_HR(hr, "Cannot have NULL parameter");
+ return hr;
+ }
+
+ // Call the base class to fill in the standard properties
+ hr = FakeContent::GetAllValues(pStore);
+ if (FAILED(hr))
+ {
+ CHECK_HR(hr, "Failed to get basic property set");
+ return hr;
+ }
+
+ // Add WPD_FUNCTIONAL_OBJECT_CATEGORY
+ hrSetValue = pStore->SetGuidValue(WPD_FUNCTIONAL_OBJECT_CATEGORY, WPD_FUNCTIONAL_CATEGORY_NETWORK_CONFIGURATION);
+ if (hrSetValue != S_OK)
+ {
+ CHECK_HR(hr, "Failed to set WPD_FUNCTIONAL_OBJECT_CATEGORY");
+ return hrSetValue;
+ }
+
+ return hr;
+ }
+
+ virtual HRESULT GetAttributes(
+ _In_ REFPROPERTYKEY Key,
+ _COM_Outptr_ IPortableDeviceValues** ppAttributes)
+ {
+ HRESULT hr = S_OK;
+ CComPtr<IPortableDeviceValues> pAttributes;
+
+ if(ppAttributes == NULL)
+ {
+ hr = E_POINTER;
+ CHECK_HR(hr, "Cannot have NULL attributes parameter");
+ return hr;
+ }
+
+ *ppAttributes = NULL;
+
+ if (SUCCEEDED(hr))
+ {
+ hr = CoCreateInstance(CLSID_PortableDeviceValues,
+ NULL,
+ CLSCTX_INPROC_SERVER,
+ IID_IPortableDeviceValues,
+ (VOID**) &pAttributes);
+ CHECK_HR(hr, "Failed to CoCreate CLSID_PortableDeviceValues");
+ }
+
+ if (SUCCEEDED(hr))
+ {
+ hr = AddFixedPropertyAttributes(WPD_FUNCTIONAL_CATEGORY_NETWORK_CONFIGURATION, Key, pAttributes);
+ CHECK_HR(hr, "Failed to add fixed property attributes for %ws.%d on NetworkConfigFakeContent", CComBSTR(Key.fmtid), Key.pid);
+ }
+
+ if (SUCCEEDED(hr))
+ {
+ hr = pAttributes->QueryInterface(IID_IPortableDeviceValues, (VOID**) ppAttributes);
+ CHECK_HR(hr, "Failed to QI for IPortableDeviceValues on IPortableDeviceValues");
+ }
+ return hr;
+ }
+
+ virtual HRESULT GetSupportedResources(_COM_Outptr_ IPortableDeviceKeyCollection** ppKeys)
+ {
+ HRESULT hr = S_OK;
+ CComPtr<IPortableDeviceKeyCollection> pKeys;
+
+ if(ppKeys == NULL)
+ {
+ hr = E_POINTER;
+ CHECK_HR(hr, "Cannot have NULL collection parameter");
+ return hr;
+ }
+
+ *ppKeys = NULL;
+
+ if (SUCCEEDED(hr))
+ {
+ hr = CoCreateInstance(CLSID_PortableDeviceKeyCollection,
+ NULL,
+ CLSCTX_INPROC_SERVER,
+ IID_IPortableDeviceKeyCollection,
+ (VOID**) &pKeys);
+ CHECK_HR(hr, "Failed to CoCreate CLSID_PortableDeviceKeyCollection");
+ }
+
+ if (SUCCEEDED(hr))
+ {
+ hr = pKeys->QueryInterface(IID_IPortableDeviceKeyCollection, (VOID**) ppKeys);
+ CHECK_HR(hr, "Failed to QI for IPortableDeviceKeyCollection on IPortableDeviceKeyCollection");
+ }
+
+ return hr;
+ }
+
+ virtual HRESULT GetResourceAttributes(
+ _In_ REFPROPERTYKEY Key,
+ _COM_Outptr_ IPortableDeviceValues** ppAttributes)
+ {
+ UNREFERENCED_PARAMETER(Key);
+ *ppAttributes = NULL;
+ return E_NOTIMPL;
+ }
+
+ virtual HRESULT ReadData(
+ _In_ REFPROPERTYKEY ResourceKey,
+ DWORD dwStartByte,
+ _Out_writes_to_(dwNumBytesToRead, *pdwNumBytesRead) BYTE* pBuffer,
+ DWORD dwNumBytesToRead,
+ _Out_ DWORD* pdwNumBytesRead)
+ {
+ UNREFERENCED_PARAMETER(ResourceKey);
+ UNREFERENCED_PARAMETER(dwStartByte);
+ UNREFERENCED_PARAMETER(pBuffer);
+ UNREFERENCED_PARAMETER(dwNumBytesToRead);
+ *pdwNumBytesRead = 0;
+ return E_NOTIMPL;
+ }
+
+ virtual HRESULT WriteData(
+ _In_ REFPROPERTYKEY ResourceKey,
+ DWORD dwStartByte,
+ _In_reads_(dwNumBytesToWrite) BYTE* pBuffer,
+ DWORD dwNumBytesToWrite,
+ _Out_ DWORD* pdwNumBytesWritten)
+ {
+ UNREFERENCED_PARAMETER(ResourceKey);
+ UNREFERENCED_PARAMETER(dwStartByte);
+ UNREFERENCED_PARAMETER(pBuffer);
+ UNREFERENCED_PARAMETER(dwNumBytesToWrite);
+ *pdwNumBytesWritten = 0;
+ return E_NOTIMPL;
+ }
+
+ virtual GUID GetObjectFormat()
+ {
+ return WPD_OBJECT_FORMAT_PROPERTIES_ONLY;
+ }
+};
+
+class FakeNetworkAssociationContent : public FakeContent
+{
+public:
+ FakeNetworkAssociationContent()
+ {
+ PropVariantInit(&HostEUI64Array);
+ }
+
+ virtual ~FakeNetworkAssociationContent()
+ {
+ }
+
+ virtual HRESULT GetAllValues(_In_ IPortableDeviceValues* pStore)
+ {
+ HRESULT hr = S_OK;
+ HRESULT hrSetValue = S_OK;
+ PropVariantWrapper pvValue;
+
+ if(pStore == NULL)
+ {
+ hr = E_POINTER;
+ CHECK_HR(hr, "Cannot have NULL parameter");
+ return hr;
+ }
+
+ hr = FakeContent::GetAllValues(pStore);
+ if (FAILED(hr))
+ {
+ CHECK_HR(hr, "Failed to get basic property set");
+ return hr;
+ }
+
+ // Add WPD_NETWORK_ASSOCIATION_HOST_NETWORK_IDENTIFIERS
+ if (HostEUI64Array.vt == VT_EMPTY)
+ {
+ // This value is supposed to be available, but it is just a soft error if it is missing
+ pvValue.SetErrorValue(HRESULT_FROM_WIN32(ERROR_NOT_FOUND));
+ hrSetValue = pStore->SetValue(WPD_NETWORK_ASSOCIATION_HOST_NETWORK_IDENTIFIERS, &pvValue);
+
+ hr = S_FALSE;
+ }
+ else
+ {
+ hrSetValue = pStore->SetValue(WPD_NETWORK_ASSOCIATION_HOST_NETWORK_IDENTIFIERS, &HostEUI64Array);
+ }
+ if (hrSetValue != S_OK)
+ {
+ CHECK_HR(hrSetValue, ("Failed to set WPD_NETWORK_ASSOCIATION_HOST_NETWORK_IDENTIFIERS"));
+ return hrSetValue;
+ }
+
+ return hr;
+ }
+
+ virtual HRESULT WriteValue(
+ _In_ REFPROPERTYKEY key,
+ _In_ REFPROPVARIANT Value)
+ {
+ HRESULT hr = S_OK;
+ PropVariantWrapper pvValue;
+
+ if(IsEqualPropertyKey(key, WPD_NETWORK_ASSOCIATION_HOST_NETWORK_IDENTIFIERS))
+ {
+ if (Value.vt == (VARTYPE)(VT_VECTOR | VT_UI1))
+ {
+ if ((Value.caub.cElems % 8) == 0)
+ {
+ if (FAILED(PropVariantClear(&HostEUI64Array)))
+ {
+ PropVariantInit(&HostEUI64Array);
+ }
+
+ hr = PropVariantCopy(&HostEUI64Array, &Value);
+ CHECK_HR(hr, "Error setting WPD_NETWORK_ASSOCIATION_HOST_NETWORK_IDENTIFIERS");
+ }
+ else
+ {
+ hr = E_INVALIDARG;
+ CHECK_HR(hr, "Failed to set WPD_NETWORK_ASSOCIATION_HOST_NETWORK_IDENTIFIERS because value was the wrong length");
+ }
+ }
+ else
+ {
+ hr = E_INVALIDARG;
+ CHECK_HR(hr, "Failed to set WPD_NETWORK_ASSOCIATION_HOST_NETWORK_IDENTIFIERS because type was not VT_VECTOR|VT_UI1");
+ }
+ }
+ else
+ {
+ hr = FakeContent::WriteValue(key, Value);
+ }
+
+ return hr;
+ }
+
+ virtual HRESULT GetSupportedResources(_COM_Outptr_ IPortableDeviceKeyCollection** ppKeys)
+ {
+ HRESULT hr = S_OK;
+ CComPtr<IPortableDeviceKeyCollection> pKeys;
+
+ if(ppKeys == NULL)
+ {
+ hr = E_POINTER;
+ CHECK_HR(hr, "Cannot have NULL collection parameter");
+ return hr;
+ }
+
+ *ppKeys = NULL;
+
+ if (SUCCEEDED(hr))
+ {
+ hr = CoCreateInstance(CLSID_PortableDeviceKeyCollection,
+ NULL,
+ CLSCTX_INPROC_SERVER,
+ IID_IPortableDeviceKeyCollection,
+ (VOID**) &pKeys);
+ CHECK_HR(hr, "Failed to CoCreate CLSID_PortableDeviceKeyCollection");
+ }
+
+ if (SUCCEEDED(hr))
+ {
+ hr = pKeys->QueryInterface(IID_IPortableDeviceKeyCollection, (VOID**) ppKeys);
+ CHECK_HR(hr, "Failed to QI for IPortableDeviceKeyCollection on IPortableDeviceKeyCollection");
+ }
+
+ return hr;
+ }
+
+ virtual HRESULT GetResourceAttributes(
+ _In_ REFPROPERTYKEY Key,
+ _COM_Outptr_ IPortableDeviceValues** ppAttributes)
+ {
+ UNREFERENCED_PARAMETER(Key);
+ *ppAttributes = NULL;
+ return E_NOTIMPL;
+ }
+
+ virtual HRESULT ReadData(
+ _In_ REFPROPERTYKEY ResourceKey,
+ DWORD dwStartByte,
+ _Out_writes_to_(dwNumBytesToRead, *pdwNumBytesRead) BYTE* pBuffer,
+ DWORD dwNumBytesToRead,
+ _Out_ DWORD* pdwNumBytesRead)
+ {
+ UNREFERENCED_PARAMETER(ResourceKey);
+ UNREFERENCED_PARAMETER(dwStartByte);
+ UNREFERENCED_PARAMETER(pBuffer);
+ UNREFERENCED_PARAMETER(dwNumBytesToRead);
+ *pdwNumBytesRead = 0;
+ return E_NOTIMPL;
+ }
+
+ virtual HRESULT WriteData(
+ _In_ REFPROPERTYKEY ResourceKey,
+ DWORD dwStartByte,
+ _In_reads_(dwNumBytesToWrite) BYTE* pBuffer,
+ DWORD dwNumBytesToWrite,
+ _Out_ DWORD* pdwNumBytesWritten)
+ {
+ UNREFERENCED_PARAMETER(ResourceKey);
+ UNREFERENCED_PARAMETER(dwStartByte);
+ UNREFERENCED_PARAMETER(pBuffer);
+ UNREFERENCED_PARAMETER(dwNumBytesToWrite);
+ *pdwNumBytesWritten = 0;
+ return E_NOTIMPL;
+ }
+
+ virtual GUID GetObjectFormat()
+ {
+ return WPD_OBJECT_FORMAT_NETWORK_ASSOCIATION;
+ }
+
+ PROPVARIANT HostEUI64Array;
+};
+
+
+class FakeWirelessProfileContent : public FakeContent
+{
+public:
+ FakeWirelessProfileContent()
+ {
+ }
+
+ virtual ~FakeWirelessProfileContent()
+ {
+ }
+
+ virtual GUID GetObjectFormat()
+ {
+ return WPD_OBJECT_FORMAT_MICROSOFT_WFC;
+ }
+};
+
+