diff options
| author | David Spruill <[email protected]> | 2026-01-08 17:51:47 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-08 17:51:47 -0500 |
| commit | c5fc3ca1fd0e00a7e085ef48abfeff9c0c39817e (patch) | |
| tree | 0e650a0fee8027816bbea82ca1fd9b8e3e6ee24a /general/WinHEC 2017 Lab | |
| parent | f88e4fbbd4d2671e5cd77e4f60be7a235326797e (diff) | |
| parent | ed3dbe56378117a15105099870f2397671ad99ab (diff) | |
Merge branch 'develop' into user/daspr/kmodsamplefix
Diffstat (limited to 'general/WinHEC 2017 Lab')
75 files changed, 0 insertions, 8110 deletions
diff --git a/general/WinHEC 2017 Lab/PlugInToaster/devcon.exe b/general/WinHEC 2017 Lab/PlugInToaster/devcon.exe Binary files differdeleted file mode 100644 index 92f91505..00000000 --- a/general/WinHEC 2017 Lab/PlugInToaster/devcon.exe +++ /dev/null diff --git a/general/WinHEC 2017 Lab/PlugInToaster/plug.exe b/general/WinHEC 2017 Lab/PlugInToaster/plug.exe Binary files differdeleted file mode 100644 index d84aa38b..00000000 --- a/general/WinHEC 2017 Lab/PlugInToaster/plug.exe +++ /dev/null diff --git a/general/WinHEC 2017 Lab/PlugInToaster/unplug.bat b/general/WinHEC 2017 Lab/PlugInToaster/unplug.bat deleted file mode 100644 index 324ae1cf..00000000 --- a/general/WinHEC 2017 Lab/PlugInToaster/unplug.bat +++ /dev/null @@ -1,2 +0,0 @@ -@sc delete hsa_usersrv -@devcon remove TOASTER\BASIC_TOASTER
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/README.md b/general/WinHEC 2017 Lab/README.md deleted file mode 100644 index eda72f91..00000000 --- a/general/WinHEC 2017 Lab/README.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -page_type: sample -description: "Toaster samples from the WinHEC 2017 Lab: Toaster Driver, PlugInToaster, and Toaster Support App." -languages: -- cpp -products: -- windows -- windows-wdk ---- - -# WinHEC 2017 Lab - -Toaster samples from the WinHEC 2017 Lab: Toaster Driver, PlugInToaster, and Toaster Support App. diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/HsaService.cpp b/general/WinHEC 2017 Lab/Toaster Driver/Service/HsaService.cpp deleted file mode 100644 index d3f70fdf..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/HsaService.cpp +++ /dev/null @@ -1,116 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -#include "stdafx.h" - -#pragma region Includes -#include <stdio.h> -#include <windows.h> -#include "ServiceInstaller.h" -#include "ServiceBase.h" -#include "SampleService.h" -#pragma endregion - -// -// Settings of the service -// - -// Internal name of the service -#define SERVICE_NAME L"HsaService" - -// Displayed name of the service -#define SERVICE_DISPLAY_NAME L"Hsa Sample Service" - -// Service start options. -#define SERVICE_START_TYPE SERVICE_DEMAND_START - -// List of service dependencies - "dep1\0dep2\0\0" -#define SERVICE_DEPENDENCIES L"" - -// The name of the account under which the service should run - NULL uses LocalSystem account. -#define SERVICE_ACCOUNT NULL - -// The password to the service account name -#define SERVICE_PASSWORD NULL - - -// -// FUNCTION: wmain(int, wchar_t *[]) -// -// PURPOSE: entrypoint for the application. -// -// PARAMETERS: -// argc - number of command line arguments -// argv - array of command line arguments -// -// RETURN VALUE: -// none -// -// COMMENTS: -// wmain() either performs the command line task, or run the service. -// -int wmain(_In_ int argc, _In_ wchar_t *argv[]) -{ - bool invalidArgs = false; - - if ((argc > 1) && ((*argv[1] == L'-' || (*argv[1] == L'/')))) - { - if (_wcsicmp(L"install", argv[1] + 1) == 0) - { - // Install the service when the command is - // "-install" or "/install". - InstallService( - SERVICE_NAME, // Name of service - SERVICE_DISPLAY_NAME, // Name to display - SERVICE_START_TYPE, // Service start type - SERVICE_DEPENDENCIES, // Dependencies - SERVICE_ACCOUNT, // Service running account - SERVICE_PASSWORD // Password of the account - ); - } - else if (_wcsicmp(L"remove", argv[1] + 1) == 0) - { - // Uninstall the service when the command is - // "-remove" or "/remove". - UninstallService(SERVICE_NAME); - } - else if (_wcsicmp(L"console", argv[1] + 1) == 0) - { - // Uninstall the service when the command is - // "-remove" or "/remove". - CSampleService service(SERVICE_NAME); - service.ConsoleRun(); - } - else - { - invalidArgs = true; - } - } - else - { - invalidArgs = true; - CSampleService service(SERVICE_NAME); - if (!CServiceBase::Run(service)) - { - wprintf(L"Service failed to run w/err 0x%08lx\n", GetLastError()); - } - } - - if (invalidArgs) - { - wprintf(L"Parameters:\n"); - wprintf(L" -install to install the service.\n"); - wprintf(L" -remove to remove the service.\n"); - wprintf(L" -console to run in console mode.\n"); - } - - return 0; -}
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/Metering.cpp b/general/WinHEC 2017 Lab/Toaster Driver/Service/Metering.cpp deleted file mode 100644 index 1766b37c..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/Metering.cpp +++ /dev/null @@ -1,148 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -#include "stdafx.h" -#include "Metering.h" -#include <assert.h> -#include "RpcInterface_h.h" - -using namespace RpcServer; - -// -// Thread pool callback method for metering worker -// -void CALLBACK MeteringWorkerTpCallback( - _In_ PTP_CALLBACK_INSTANCE /*iTimerInstance*/, - _In_ PVOID pContext, - _In_ PTP_TIMER /*pTimer*/) -{ - Metering *metering = static_cast<Metering *>(pContext); - - if (metering != nullptr) - { - // Run the metering worker for this instance of metering - metering->MeteringWorker(); - } -} - -// -// ctor for Metering -// -Metering::Metering( - _In_ __int64 period) -{ - tpTimer = CreateThreadpoolTimer(::MeteringWorkerTpCallback, this, nullptr); - // TODO: Handle if CreateThreadpoolTimer fails i.e tpTimer == nullptr - - samplePeriod = period; - event = CreateEvent( - nullptr, // default security attributes - FALSE, // auto-reset event object - FALSE, // initial state is nonsignaled - nullptr); // unnamed object -} - -// -// dtor for Metering -// -Metering::~Metering() -{ - if (tpTimer != nullptr) - { - // How to close threadpool timer when there are outstanding callbacks: - // https://msdn.microsoft.com/en-us/library/windows/desktop/ms682040(v=vs.85).aspx - SetThreadpoolTimer(tpTimer, nullptr, 0, 0); - WaitForThreadpoolTimerCallbacks(tpTimer, true); - CloseThreadpoolTimer(tpTimer); - tpTimer = nullptr; - } - CloseHandle(event); -} - -// -// Set the lowest sample period -// -void Metering::SetSamplePeriod(_In_ __int64 period) -{ - if (period < 1) - { - // Don't allow 0 (too fast) or negative numbers. - period = 1; - } - if (period > 1000) - { - // Don't let the period be too long, or we will be - // slow to shut down. - period = 1000; - } - samplePeriod = period; -} - -// -// Get last known metering data -// -__int64 Metering::GetMeteringData() const -{ - return _data; -} - -// -// Metering worker that updates metering data -// -void Metering::MeteringWorker() -{ - // Get the value from the imaginary driver and update the data - _data = GetTickCount(); - SetEvent(event); -} - -// -// Set the thread poot timer and wait for metering data. -// -void Metering::WaitForMeteringData() const -{ - ULARGE_INTEGER ulDueTime; - FILETIME FileDueTime; - ulDueTime.QuadPart = static_cast<ULONGLONG>(-(1 * 10 * 1000 * samplePeriod)); - FileDueTime.dwHighDateTime = ulDueTime.HighPart; - FileDueTime.dwLowDateTime = ulDueTime.LowPart; - - SetThreadpoolTimer(tpTimer, - &FileDueTime, - 0, - 0); - - WaitForSingleObject(event, INFINITE); -} - -void Metering::StartMetering( - _In_ __int64 samplePeriod, - _In_ __int64 context) -{ - stopMeteringRequested = false; - SetSamplePeriod(samplePeriod); - - while (true) - { - WaitForMeteringData(); - if (stopMeteringRequested || ShutdownRequested) - { - break; - } - MeteringDataEvent(GetMeteringData(), context); - } -} - -void Metering::StopMetering() -{ - stopMeteringRequested = true; -} - diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/Metering.h b/general/WinHEC 2017 Lab/Toaster Driver/Service/Metering.h deleted file mode 100644 index bfb48216..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/Metering.h +++ /dev/null @@ -1,29 +0,0 @@ -#include "stdafx.h" -#include <windows.h> - -#include <iostream> // std::cout -#include <thread> // std::thread -#include <mutex> - -namespace RpcServer -{ - class Metering - { - public: - Metering(__int64 period); - void SetSamplePeriod(__int64 period); - __int64 GetMeteringData() const; - void MeteringWorker(); - void WaitForMeteringData() const; - void StartMetering(__int64 samplePeriod, __int64 context); - void StopMetering(); - ~Metering(); - - private: - volatile __int64 _data; - volatile __int64 samplePeriod; - PTP_TIMER tpTimer = nullptr; - HANDLE event; - volatile bool stopMeteringRequested = false; - }; -} diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcInterface.Idl b/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcInterface.Idl deleted file mode 100644 index 1b4b74cc..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcInterface.Idl +++ /dev/null @@ -1,51 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -import "oaidl.idl"; -import "unknwn.idl"; - -[uuid (906B0CE0-C70B-1067-B317-00DD010662DA), -version(1.0), -pointer_default(unique), -] -interface RpcInterface -{ - - // context_handle_noserialize in acf for RPC to call rundown when the client goes away - typedef [context_handle] void* PCONTEXT_HANDLE_TYPE; - typedef [ref] PCONTEXT_HANDLE_TYPE * PPCONTEXT_HANDLE_TYPE; - - // - // RPC methods to retrieve/clean client context - // - void RemoteOpen([in] handle_t hBinding, - [out] PPCONTEXT_HANDLE_TYPE pphContext); - - void RemoteClose([in, out] PPCONTEXT_HANDLE_TYPE pphContext); - - // - // Metering Interface - // - void StartMetering( - [in] PCONTEXT_HANDLE_TYPE phContext, - [in] __int64 samplePeriod, - [in, optional] __int64 context); - - void SetSamplePeriod( - [in] PCONTEXT_HANDLE_TYPE phContext, - [in] __int64 samplePeriod); - - void StopMetering([in] PCONTEXT_HANDLE_TYPE phContext); - - [callback] void MeteringDataEvent( - [in] __int64 data, - [in, optional] __int64 context); -} diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcInterface.acf b/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcInterface.acf deleted file mode 100644 index d00ed5af..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcInterface.acf +++ /dev/null @@ -1,17 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the Microsoft Public License. -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - - -interface RpcInterface -{ - // We need the RPC to call rundown when the client goes away - typedef [context_handle_noserialize] PCONTEXT_HANDLE_TYPE; -} diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcInterface_c.c b/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcInterface_c.c deleted file mode 100644 index fbe0a799..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcInterface_c.c +++ /dev/null @@ -1,476 +0,0 @@ - - -/* this ALWAYS GENERATED file contains the RPC client stubs */ - - - /* File created by MIDL compiler version 8.01.0622 */ -/* at Mon Jan 18 19:14:07 2038 - */ -/* Compiler settings for RpcInterface.Idl: - Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0622 - protocol : dce , ms_ext, c_ext, robust - error checks: allocation ref bounds_check enum stub_data - VC __declspec() decoration level: - __declspec(uuid()), __declspec(selectany), __declspec(novtable) - DECLSPEC_UUID(), MIDL_INTERFACE() -*/ -/* @@MIDL_FILE_HEADING( ) */ - -#if defined(_M_AMD64) - - -#pragma warning( disable: 4049 ) /* more than 64k source lines */ -#if _MSC_VER >= 1200 -#pragma warning(push) -#endif - -#pragma warning( disable: 4211 ) /* redefine extern to static */ -#pragma warning( disable: 4232 ) /* dllimport identity*/ -#pragma warning( disable: 4024 ) /* array to pointer mapping*/ - -#include <string.h> - -#include "RpcInterface_h.h" - -#define TYPE_FORMAT_STRING_SIZE 23 -#define PROC_FORMAT_STRING_SIZE 245 -#define EXPR_FORMAT_STRING_SIZE 1 -#define TRANSMIT_AS_TABLE_SIZE 0 -#define WIRE_MARSHAL_TABLE_SIZE 0 - -typedef struct _RpcInterface_MIDL_TYPE_FORMAT_STRING - { - short Pad; - unsigned char Format[ TYPE_FORMAT_STRING_SIZE ]; - } RpcInterface_MIDL_TYPE_FORMAT_STRING; - -typedef struct _RpcInterface_MIDL_PROC_FORMAT_STRING - { - short Pad; - unsigned char Format[ PROC_FORMAT_STRING_SIZE ]; - } RpcInterface_MIDL_PROC_FORMAT_STRING; - -typedef struct _RpcInterface_MIDL_EXPR_FORMAT_STRING - { - long Pad; - unsigned char Format[ EXPR_FORMAT_STRING_SIZE ]; - } RpcInterface_MIDL_EXPR_FORMAT_STRING; - - -static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax = -{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}; - - -extern const RpcInterface_MIDL_TYPE_FORMAT_STRING RpcInterface__MIDL_TypeFormatString; -extern const RpcInterface_MIDL_PROC_FORMAT_STRING RpcInterface__MIDL_ProcFormatString; -extern const RpcInterface_MIDL_EXPR_FORMAT_STRING RpcInterface__MIDL_ExprFormatString; - -#define GENERIC_BINDING_TABLE_SIZE 0 - - -/* Standard interface: RpcInterface, ver. 1.0, - GUID={0x906B0CE0,0xC70B,0x1067,{0xB3,0x17,0x00,0xDD,0x01,0x06,0x62,0xDA}} */ - - -extern const MIDL_SERVER_INFO RpcInterface_ServerInfo; - - -extern const RPC_DISPATCH_TABLE RpcInterface_v1_0_DispatchTable; - -static const RPC_CLIENT_INTERFACE RpcInterface___RpcClientInterface = - { - sizeof(RPC_CLIENT_INTERFACE), - {{0x906B0CE0,0xC70B,0x1067,{0xB3,0x17,0x00,0xDD,0x01,0x06,0x62,0xDA}},{1,0}}, - {{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}, - (RPC_DISPATCH_TABLE*)&RpcInterface_v1_0_DispatchTable, - 0, - 0, - 0, - &RpcInterface_ServerInfo, - 0x04000000 - }; -RPC_IF_HANDLE RpcInterface_v1_0_c_ifspec = (RPC_IF_HANDLE)& RpcInterface___RpcClientInterface; - -extern const MIDL_STUB_DESC RpcInterface_StubDesc; - -static RPC_BINDING_HANDLE RpcInterface__MIDL_AutoBindHandle; - - -void RemoteOpen( - /* [in] */ handle_t hBinding, - /* [out] */ PPCONTEXT_HANDLE_TYPE pphContext) -{ - - NdrClientCall2( - ( PMIDL_STUB_DESC )&RpcInterface_StubDesc, - (PFORMAT_STRING) &RpcInterface__MIDL_ProcFormatString.Format[0], - hBinding, - pphContext); - -} - - -void RemoteClose( - /* [out][in] */ PPCONTEXT_HANDLE_TYPE pphContext) -{ - - NdrClientCall2( - ( PMIDL_STUB_DESC )&RpcInterface_StubDesc, - (PFORMAT_STRING) &RpcInterface__MIDL_ProcFormatString.Format[36], - pphContext); - -} - - -void StartMetering( - /* [in] */ PCONTEXT_HANDLE_TYPE phContext, - /* [in] */ __int64 samplePeriod, - /* [optional][in] */ __int64 context) -{ - - NdrClientCall2( - ( PMIDL_STUB_DESC )&RpcInterface_StubDesc, - (PFORMAT_STRING) &RpcInterface__MIDL_ProcFormatString.Format[74], - phContext, - samplePeriod, - context); - -} - - -void SetSamplePeriod( - /* [in] */ PCONTEXT_HANDLE_TYPE phContext, - /* [in] */ __int64 samplePeriod) -{ - - NdrClientCall2( - ( PMIDL_STUB_DESC )&RpcInterface_StubDesc, - (PFORMAT_STRING) &RpcInterface__MIDL_ProcFormatString.Format[124], - phContext, - samplePeriod); - -} - - -void StopMetering( - /* [in] */ PCONTEXT_HANDLE_TYPE phContext) -{ - - NdrClientCall2( - ( PMIDL_STUB_DESC )&RpcInterface_StubDesc, - (PFORMAT_STRING) &RpcInterface__MIDL_ProcFormatString.Format[168], - phContext); - -} - - -#if !defined(__RPC_WIN64__) -#error Invalid build platform for this stub. -#endif - -static const RpcInterface_MIDL_PROC_FORMAT_STRING RpcInterface__MIDL_ProcFormatString = - { - 0, - { - - /* Procedure RemoteOpen */ - - 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 2 */ NdrFcLong( 0x0 ), /* 0 */ -/* 6 */ NdrFcShort( 0x0 ), /* 0 */ -/* 8 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ -/* 10 */ 0x32, /* FC_BIND_PRIMITIVE */ - 0x0, /* 0 */ -/* 12 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 14 */ NdrFcShort( 0x0 ), /* 0 */ -/* 16 */ NdrFcShort( 0x38 ), /* 56 */ -/* 18 */ 0x40, /* Oi2 Flags: has ext, */ - 0x1, /* 1 */ -/* 20 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 22 */ NdrFcShort( 0x0 ), /* 0 */ -/* 24 */ NdrFcShort( 0x0 ), /* 0 */ -/* 26 */ NdrFcShort( 0x0 ), /* 0 */ -/* 28 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter pphContext */ - -/* 30 */ NdrFcShort( 0x110 ), /* Flags: out, simple ref, */ -/* 32 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 34 */ NdrFcShort( 0x6 ), /* Type Offset=6 */ - - /* Procedure RemoteClose */ - -/* 36 */ 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 38 */ NdrFcLong( 0x0 ), /* 0 */ -/* 42 */ NdrFcShort( 0x1 ), /* 1 */ -/* 44 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 46 */ 0x30, /* FC_BIND_CONTEXT */ - 0xe4, /* Ctxt flags: via ptr, in, out, no serialize, */ -/* 48 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 50 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 52 */ NdrFcShort( 0x38 ), /* 56 */ -/* 54 */ NdrFcShort( 0x38 ), /* 56 */ -/* 56 */ 0x40, /* Oi2 Flags: has ext, */ - 0x1, /* 1 */ -/* 58 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 60 */ NdrFcShort( 0x0 ), /* 0 */ -/* 62 */ NdrFcShort( 0x0 ), /* 0 */ -/* 64 */ NdrFcShort( 0x0 ), /* 0 */ -/* 66 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter pphContext */ - -/* 68 */ NdrFcShort( 0x118 ), /* Flags: in, out, simple ref, */ -/* 70 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 72 */ NdrFcShort( 0xe ), /* Type Offset=14 */ - - /* Procedure StartMetering */ - -/* 74 */ 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 76 */ NdrFcLong( 0x0 ), /* 0 */ -/* 80 */ NdrFcShort( 0x2 ), /* 2 */ -/* 82 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */ -/* 84 */ 0x30, /* FC_BIND_CONTEXT */ - 0x44, /* Ctxt flags: in, no serialize, */ -/* 86 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 88 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 90 */ NdrFcShort( 0x44 ), /* 68 */ -/* 92 */ NdrFcShort( 0x0 ), /* 0 */ -/* 94 */ 0x40, /* Oi2 Flags: has ext, */ - 0x3, /* 3 */ -/* 96 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 98 */ NdrFcShort( 0x0 ), /* 0 */ -/* 100 */ NdrFcShort( 0x0 ), /* 0 */ -/* 102 */ NdrFcShort( 0x0 ), /* 0 */ -/* 104 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter phContext */ - -/* 106 */ NdrFcShort( 0x8 ), /* Flags: in, */ -/* 108 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 110 */ NdrFcShort( 0x12 ), /* Type Offset=18 */ - - /* Parameter samplePeriod */ - -/* 112 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 114 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 116 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - /* Parameter context */ - -/* 118 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 120 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ -/* 122 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - /* Procedure SetSamplePeriod */ - -/* 124 */ 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 126 */ NdrFcLong( 0x0 ), /* 0 */ -/* 130 */ NdrFcShort( 0x3 ), /* 3 */ -/* 132 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ -/* 134 */ 0x30, /* FC_BIND_CONTEXT */ - 0x44, /* Ctxt flags: in, no serialize, */ -/* 136 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 138 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 140 */ NdrFcShort( 0x34 ), /* 52 */ -/* 142 */ NdrFcShort( 0x0 ), /* 0 */ -/* 144 */ 0x40, /* Oi2 Flags: has ext, */ - 0x2, /* 2 */ -/* 146 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 148 */ NdrFcShort( 0x0 ), /* 0 */ -/* 150 */ NdrFcShort( 0x0 ), /* 0 */ -/* 152 */ NdrFcShort( 0x0 ), /* 0 */ -/* 154 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter phContext */ - -/* 156 */ NdrFcShort( 0x8 ), /* Flags: in, */ -/* 158 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 160 */ NdrFcShort( 0x12 ), /* Type Offset=18 */ - - /* Parameter samplePeriod */ - -/* 162 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 164 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 166 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - /* Procedure StopMetering */ - -/* 168 */ 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 170 */ NdrFcLong( 0x0 ), /* 0 */ -/* 174 */ NdrFcShort( 0x4 ), /* 4 */ -/* 176 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 178 */ 0x30, /* FC_BIND_CONTEXT */ - 0x44, /* Ctxt flags: in, no serialize, */ -/* 180 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 182 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 184 */ NdrFcShort( 0x24 ), /* 36 */ -/* 186 */ NdrFcShort( 0x0 ), /* 0 */ -/* 188 */ 0x40, /* Oi2 Flags: has ext, */ - 0x1, /* 1 */ -/* 190 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 192 */ NdrFcShort( 0x0 ), /* 0 */ -/* 194 */ NdrFcShort( 0x0 ), /* 0 */ -/* 196 */ NdrFcShort( 0x0 ), /* 0 */ -/* 198 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter phContext */ - -/* 200 */ NdrFcShort( 0x8 ), /* Flags: in, */ -/* 202 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 204 */ NdrFcShort( 0x12 ), /* Type Offset=18 */ - - /* Procedure MeteringDataEvent */ - -/* 206 */ 0x34, /* FC_CALLBACK_HANDLE */ - 0x48, /* Old Flags: */ -/* 208 */ NdrFcLong( 0x0 ), /* 0 */ -/* 212 */ NdrFcShort( 0x0 ), /* 0 */ -/* 214 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ -/* 216 */ NdrFcShort( 0x20 ), /* 32 */ -/* 218 */ NdrFcShort( 0x0 ), /* 0 */ -/* 220 */ 0x40, /* Oi2 Flags: has ext, */ - 0x2, /* 2 */ -/* 222 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 224 */ NdrFcShort( 0x0 ), /* 0 */ -/* 226 */ NdrFcShort( 0x0 ), /* 0 */ -/* 228 */ NdrFcShort( 0x0 ), /* 0 */ -/* 230 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter data */ - -/* 232 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 234 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 236 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - /* Parameter context */ - -/* 238 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 240 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 242 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - 0x0 - } - }; - -static const RpcInterface_MIDL_TYPE_FORMAT_STRING RpcInterface__MIDL_TypeFormatString = - { - 0, - { - NdrFcShort( 0x0 ), /* 0 */ -/* 2 */ - 0x11, 0x4, /* FC_RP [alloced_on_stack] */ -/* 4 */ NdrFcShort( 0x2 ), /* Offset= 2 (6) */ -/* 6 */ 0x30, /* FC_BIND_CONTEXT */ - 0xa4, /* Ctxt flags: via ptr, out, no serialize, */ -/* 8 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 10 */ - 0x11, 0x4, /* FC_RP [alloced_on_stack] */ -/* 12 */ NdrFcShort( 0x2 ), /* Offset= 2 (14) */ -/* 14 */ 0x30, /* FC_BIND_CONTEXT */ - 0xe5, /* Ctxt flags: via ptr, in, out, no serialize, can't be null */ -/* 16 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 18 */ 0x30, /* FC_BIND_CONTEXT */ - 0x45, /* Ctxt flags: in, no serialize, can't be null */ -/* 20 */ 0x0, /* 0 */ - 0x0, /* 0 */ - - 0x0 - } - }; - -static const unsigned short RpcInterface_FormatStringOffsetTable[] = - { - 0, - 36, - 74, - 124, - 168, - }; - - -static const unsigned short _callbackRpcInterface_FormatStringOffsetTable[] = - { - 206 - }; - - -static const MIDL_STUB_DESC RpcInterface_StubDesc = - { - (void *)& RpcInterface___RpcClientInterface, - MIDL_user_allocate, - MIDL_user_free, - &RpcInterface__MIDL_AutoBindHandle, - 0, - 0, - 0, - 0, - RpcInterface__MIDL_TypeFormatString.Format, - 1, /* -error bounds_check flag */ - 0x50002, /* Ndr library version */ - 0, - 0x801026e, /* MIDL Version 8.1.622 */ - 0, - 0, - 0, /* notify & notify_flag routine table */ - 0x1, /* MIDL flag */ - 0, /* cs routines */ - 0, /* proxy/server info */ - 0 - }; - -static const RPC_DISPATCH_FUNCTION RpcInterface_table[] = - { - NdrServerCall2, - 0 - }; -static const RPC_DISPATCH_TABLE RpcInterface_v1_0_DispatchTable = - { - 1, - (RPC_DISPATCH_FUNCTION*)RpcInterface_table - }; - -static const SERVER_ROUTINE RpcInterface_ServerRoutineTable[] = - { - (SERVER_ROUTINE)MeteringDataEvent - }; - -static const MIDL_SERVER_INFO RpcInterface_ServerInfo = - { - &RpcInterface_StubDesc, - RpcInterface_ServerRoutineTable, - RpcInterface__MIDL_ProcFormatString.Format, - _callbackRpcInterface_FormatStringOffsetTable, - 0, - 0, - 0, - 0}; -#if _MSC_VER >= 1200 -#pragma warning(pop) -#endif - - -#endif /* defined(_M_AMD64)*/ - diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcInterface_h.h b/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcInterface_h.h deleted file mode 100644 index 98544da7..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcInterface_h.h +++ /dev/null @@ -1,103 +0,0 @@ - - -/* this ALWAYS GENERATED file contains the definitions for the interfaces */ - - - /* File created by MIDL compiler version 8.01.0622 */ -/* at Mon Jan 18 19:14:07 2038 - */ -/* Compiler settings for RpcInterface.Idl: - Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0622 - protocol : dce , ms_ext, c_ext, robust - error checks: allocation ref bounds_check enum stub_data - VC __declspec() decoration level: - __declspec(uuid()), __declspec(selectany), __declspec(novtable) - DECLSPEC_UUID(), MIDL_INTERFACE() -*/ -/* @@MIDL_FILE_HEADING( ) */ - -#pragma warning( disable: 4049 ) /* more than 64k source lines */ - - -/* verify that the <rpcndr.h> version is high enough to compile this file*/ -#ifndef __REQUIRED_RPCNDR_H_VERSION__ -#define __REQUIRED_RPCNDR_H_VERSION__ 475 -#endif - -#include "rpc.h" -#include "rpcndr.h" - -#ifndef __RPCNDR_H_VERSION__ -#error this stub requires an updated version of <rpcndr.h> -#endif /* __RPCNDR_H_VERSION__ */ - - -#ifndef __RpcInterface_h_h__ -#define __RpcInterface_h_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -/* Forward Declarations */ - -/* header files for imported files */ -#include "oaidl.h" - -#ifdef __cplusplus -extern "C"{ -#endif - - -#ifndef __RpcInterface_INTERFACE_DEFINED__ -#define __RpcInterface_INTERFACE_DEFINED__ - -/* interface RpcInterface */ -/* [unique][version][uuid] */ - -typedef /* [context_handle_noserialize][context_handle] */ void *PCONTEXT_HANDLE_TYPE; - -typedef /* [ref] */ PCONTEXT_HANDLE_TYPE *PPCONTEXT_HANDLE_TYPE; - -void RemoteOpen( - /* [in] */ handle_t hBinding, - /* [out] */ PPCONTEXT_HANDLE_TYPE pphContext); - -void RemoteClose( - /* [out][in] */ PPCONTEXT_HANDLE_TYPE pphContext); - -void StartMetering( - /* [in] */ PCONTEXT_HANDLE_TYPE phContext, - /* [in] */ __int64 samplePeriod, - /* [optional][in] */ __int64 context); - -void SetSamplePeriod( - /* [in] */ PCONTEXT_HANDLE_TYPE phContext, - /* [in] */ __int64 samplePeriod); - -void StopMetering( - /* [in] */ PCONTEXT_HANDLE_TYPE phContext); - -/* [callback] */ void MeteringDataEvent( - /* [in] */ __int64 data, - /* [optional][in] */ __int64 context); - - - -extern RPC_IF_HANDLE RpcInterface_v1_0_c_ifspec; -extern RPC_IF_HANDLE RpcInterface_v1_0_s_ifspec; -#endif /* __RpcInterface_INTERFACE_DEFINED__ */ - -/* Additional Prototypes for ALL interfaces */ - -void __RPC_USER PCONTEXT_HANDLE_TYPE_rundown( PCONTEXT_HANDLE_TYPE ); - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcInterface_s.c b/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcInterface_s.c deleted file mode 100644 index 89aa59bf..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcInterface_s.c +++ /dev/null @@ -1,430 +0,0 @@ - - -/* this ALWAYS GENERATED file contains the RPC server stubs */ - - - /* File created by MIDL compiler version 8.01.0622 */ -/* at Mon Jan 18 19:14:07 2038 - */ -/* Compiler settings for RpcInterface.Idl: - Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0622 - protocol : dce , ms_ext, c_ext, robust - error checks: allocation ref bounds_check enum stub_data - VC __declspec() decoration level: - __declspec(uuid()), __declspec(selectany), __declspec(novtable) - DECLSPEC_UUID(), MIDL_INTERFACE() -*/ -/* @@MIDL_FILE_HEADING( ) */ - -#if defined(_M_AMD64) - - -#pragma warning( disable: 4049 ) /* more than 64k source lines */ -#if _MSC_VER >= 1200 -#pragma warning(push) -#endif - -#pragma warning( disable: 4211 ) /* redefine extern to static */ -#pragma warning( disable: 4232 ) /* dllimport identity*/ -#pragma warning( disable: 4024 ) /* array to pointer mapping*/ - -#include <string.h> -#include "RpcInterface_h.h" - -#define TYPE_FORMAT_STRING_SIZE 23 -#define PROC_FORMAT_STRING_SIZE 245 -#define EXPR_FORMAT_STRING_SIZE 1 -#define TRANSMIT_AS_TABLE_SIZE 0 -#define WIRE_MARSHAL_TABLE_SIZE 0 - -typedef struct _RpcInterface_MIDL_TYPE_FORMAT_STRING - { - short Pad; - unsigned char Format[ TYPE_FORMAT_STRING_SIZE ]; - } RpcInterface_MIDL_TYPE_FORMAT_STRING; - -typedef struct _RpcInterface_MIDL_PROC_FORMAT_STRING - { - short Pad; - unsigned char Format[ PROC_FORMAT_STRING_SIZE ]; - } RpcInterface_MIDL_PROC_FORMAT_STRING; - -typedef struct _RpcInterface_MIDL_EXPR_FORMAT_STRING - { - long Pad; - unsigned char Format[ EXPR_FORMAT_STRING_SIZE ]; - } RpcInterface_MIDL_EXPR_FORMAT_STRING; - - -static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax = -{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}; - -extern const RpcInterface_MIDL_TYPE_FORMAT_STRING RpcInterface__MIDL_TypeFormatString; -extern const RpcInterface_MIDL_PROC_FORMAT_STRING RpcInterface__MIDL_ProcFormatString; -extern const RpcInterface_MIDL_EXPR_FORMAT_STRING RpcInterface__MIDL_ExprFormatString; - -/* Standard interface: RpcInterface, ver. 1.0, - GUID={0x906B0CE0,0xC70B,0x1067,{0xB3,0x17,0x00,0xDD,0x01,0x06,0x62,0xDA}} */ - - -extern const MIDL_SERVER_INFO RpcInterface_ServerInfo; - -extern const RPC_DISPATCH_TABLE RpcInterface_v1_0_DispatchTable; - -static const RPC_SERVER_INTERFACE RpcInterface___RpcServerInterface = - { - sizeof(RPC_SERVER_INTERFACE), - {{0x906B0CE0,0xC70B,0x1067,{0xB3,0x17,0x00,0xDD,0x01,0x06,0x62,0xDA}},{1,0}}, - {{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}, - (RPC_DISPATCH_TABLE*)&RpcInterface_v1_0_DispatchTable, - 0, - 0, - 0, - &RpcInterface_ServerInfo, - 0x04000000 - }; -RPC_IF_HANDLE RpcInterface_v1_0_s_ifspec = (RPC_IF_HANDLE)& RpcInterface___RpcServerInterface; - -extern const MIDL_STUB_DESC RpcInterface_StubDesc; - - extern const MIDL_STUBLESS_PROXY_INFO RpcInterface_ProxyInfo; - -/* [callback] */ void MeteringDataEvent( - /* [in] */ __int64 data, - /* [optional][in] */ __int64 context) -{ - - NdrClientCall2( - ( PMIDL_STUB_DESC )&RpcInterface_StubDesc, - (PFORMAT_STRING) &RpcInterface__MIDL_ProcFormatString.Format[206], - data, - context); - -} - -extern const NDR_RUNDOWN RundownRoutines[]; - -#if !defined(__RPC_WIN64__) -#error Invalid build platform for this stub. -#endif - -static const RpcInterface_MIDL_PROC_FORMAT_STRING RpcInterface__MIDL_ProcFormatString = - { - 0, - { - - /* Procedure RemoteOpen */ - - 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 2 */ NdrFcLong( 0x0 ), /* 0 */ -/* 6 */ NdrFcShort( 0x0 ), /* 0 */ -/* 8 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ -/* 10 */ 0x32, /* FC_BIND_PRIMITIVE */ - 0x0, /* 0 */ -/* 12 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 14 */ NdrFcShort( 0x0 ), /* 0 */ -/* 16 */ NdrFcShort( 0x38 ), /* 56 */ -/* 18 */ 0x40, /* Oi2 Flags: has ext, */ - 0x1, /* 1 */ -/* 20 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 22 */ NdrFcShort( 0x0 ), /* 0 */ -/* 24 */ NdrFcShort( 0x0 ), /* 0 */ -/* 26 */ NdrFcShort( 0x0 ), /* 0 */ -/* 28 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter pphContext */ - -/* 30 */ NdrFcShort( 0x110 ), /* Flags: out, simple ref, */ -/* 32 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 34 */ NdrFcShort( 0x6 ), /* Type Offset=6 */ - - /* Procedure RemoteClose */ - -/* 36 */ 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 38 */ NdrFcLong( 0x0 ), /* 0 */ -/* 42 */ NdrFcShort( 0x1 ), /* 1 */ -/* 44 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 46 */ 0x30, /* FC_BIND_CONTEXT */ - 0xe4, /* Ctxt flags: via ptr, in, out, no serialize, */ -/* 48 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 50 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 52 */ NdrFcShort( 0x38 ), /* 56 */ -/* 54 */ NdrFcShort( 0x38 ), /* 56 */ -/* 56 */ 0x40, /* Oi2 Flags: has ext, */ - 0x1, /* 1 */ -/* 58 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 60 */ NdrFcShort( 0x0 ), /* 0 */ -/* 62 */ NdrFcShort( 0x0 ), /* 0 */ -/* 64 */ NdrFcShort( 0x0 ), /* 0 */ -/* 66 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter pphContext */ - -/* 68 */ NdrFcShort( 0x118 ), /* Flags: in, out, simple ref, */ -/* 70 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 72 */ NdrFcShort( 0xe ), /* Type Offset=14 */ - - /* Procedure StartMetering */ - -/* 74 */ 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 76 */ NdrFcLong( 0x0 ), /* 0 */ -/* 80 */ NdrFcShort( 0x2 ), /* 2 */ -/* 82 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */ -/* 84 */ 0x30, /* FC_BIND_CONTEXT */ - 0x44, /* Ctxt flags: in, no serialize, */ -/* 86 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 88 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 90 */ NdrFcShort( 0x44 ), /* 68 */ -/* 92 */ NdrFcShort( 0x0 ), /* 0 */ -/* 94 */ 0x40, /* Oi2 Flags: has ext, */ - 0x3, /* 3 */ -/* 96 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 98 */ NdrFcShort( 0x0 ), /* 0 */ -/* 100 */ NdrFcShort( 0x0 ), /* 0 */ -/* 102 */ NdrFcShort( 0x0 ), /* 0 */ -/* 104 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter phContext */ - -/* 106 */ NdrFcShort( 0x8 ), /* Flags: in, */ -/* 108 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 110 */ NdrFcShort( 0x12 ), /* Type Offset=18 */ - - /* Parameter samplePeriod */ - -/* 112 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 114 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 116 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - /* Parameter context */ - -/* 118 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 120 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ -/* 122 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - /* Procedure SetSamplePeriod */ - -/* 124 */ 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 126 */ NdrFcLong( 0x0 ), /* 0 */ -/* 130 */ NdrFcShort( 0x3 ), /* 3 */ -/* 132 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ -/* 134 */ 0x30, /* FC_BIND_CONTEXT */ - 0x44, /* Ctxt flags: in, no serialize, */ -/* 136 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 138 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 140 */ NdrFcShort( 0x34 ), /* 52 */ -/* 142 */ NdrFcShort( 0x0 ), /* 0 */ -/* 144 */ 0x40, /* Oi2 Flags: has ext, */ - 0x2, /* 2 */ -/* 146 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 148 */ NdrFcShort( 0x0 ), /* 0 */ -/* 150 */ NdrFcShort( 0x0 ), /* 0 */ -/* 152 */ NdrFcShort( 0x0 ), /* 0 */ -/* 154 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter phContext */ - -/* 156 */ NdrFcShort( 0x8 ), /* Flags: in, */ -/* 158 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 160 */ NdrFcShort( 0x12 ), /* Type Offset=18 */ - - /* Parameter samplePeriod */ - -/* 162 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 164 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 166 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - /* Procedure StopMetering */ - -/* 168 */ 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 170 */ NdrFcLong( 0x0 ), /* 0 */ -/* 174 */ NdrFcShort( 0x4 ), /* 4 */ -/* 176 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 178 */ 0x30, /* FC_BIND_CONTEXT */ - 0x44, /* Ctxt flags: in, no serialize, */ -/* 180 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 182 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 184 */ NdrFcShort( 0x24 ), /* 36 */ -/* 186 */ NdrFcShort( 0x0 ), /* 0 */ -/* 188 */ 0x40, /* Oi2 Flags: has ext, */ - 0x1, /* 1 */ -/* 190 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 192 */ NdrFcShort( 0x0 ), /* 0 */ -/* 194 */ NdrFcShort( 0x0 ), /* 0 */ -/* 196 */ NdrFcShort( 0x0 ), /* 0 */ -/* 198 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter phContext */ - -/* 200 */ NdrFcShort( 0x8 ), /* Flags: in, */ -/* 202 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 204 */ NdrFcShort( 0x12 ), /* Type Offset=18 */ - - /* Procedure MeteringDataEvent */ - -/* 206 */ 0x34, /* FC_CALLBACK_HANDLE */ - 0x48, /* Old Flags: */ -/* 208 */ NdrFcLong( 0x0 ), /* 0 */ -/* 212 */ NdrFcShort( 0x0 ), /* 0 */ -/* 214 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ -/* 216 */ NdrFcShort( 0x20 ), /* 32 */ -/* 218 */ NdrFcShort( 0x0 ), /* 0 */ -/* 220 */ 0x40, /* Oi2 Flags: has ext, */ - 0x2, /* 2 */ -/* 222 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 224 */ NdrFcShort( 0x0 ), /* 0 */ -/* 226 */ NdrFcShort( 0x0 ), /* 0 */ -/* 228 */ NdrFcShort( 0x0 ), /* 0 */ -/* 230 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter data */ - -/* 232 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 234 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 236 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - /* Parameter context */ - -/* 238 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 240 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 242 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - 0x0 - } - }; - -static const RpcInterface_MIDL_TYPE_FORMAT_STRING RpcInterface__MIDL_TypeFormatString = - { - 0, - { - NdrFcShort( 0x0 ), /* 0 */ -/* 2 */ - 0x11, 0x4, /* FC_RP [alloced_on_stack] */ -/* 4 */ NdrFcShort( 0x2 ), /* Offset= 2 (6) */ -/* 6 */ 0x30, /* FC_BIND_CONTEXT */ - 0xa4, /* Ctxt flags: via ptr, out, no serialize, */ -/* 8 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 10 */ - 0x11, 0x4, /* FC_RP [alloced_on_stack] */ -/* 12 */ NdrFcShort( 0x2 ), /* Offset= 2 (14) */ -/* 14 */ 0x30, /* FC_BIND_CONTEXT */ - 0xe5, /* Ctxt flags: via ptr, in, out, no serialize, can't be null */ -/* 16 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 18 */ 0x30, /* FC_BIND_CONTEXT */ - 0x45, /* Ctxt flags: in, no serialize, can't be null */ -/* 20 */ 0x0, /* 0 */ - 0x0, /* 0 */ - - 0x0 - } - }; - -static const NDR_RUNDOWN RundownRoutines[] = - { - PCONTEXT_HANDLE_TYPE_rundown - }; - - -static const unsigned short RpcInterface_FormatStringOffsetTable[] = - { - 0, - 36, - 74, - 124, - 168, - }; - - -static const unsigned short _callbackRpcInterface_FormatStringOffsetTable[] = - { - 206 - }; - - -static const MIDL_STUB_DESC RpcInterface_StubDesc = - { - (void *)& RpcInterface___RpcServerInterface, - MIDL_user_allocate, - MIDL_user_free, - 0, - RundownRoutines, - 0, - 0, - 0, - RpcInterface__MIDL_TypeFormatString.Format, - 1, /* -error bounds_check flag */ - 0x50002, /* Ndr library version */ - 0, - 0x801026e, /* MIDL Version 8.1.622 */ - 0, - 0, - 0, /* notify & notify_flag routine table */ - 0x1, /* MIDL flag */ - 0, /* cs routines */ - 0, /* proxy/server info */ - 0 - }; - -static const RPC_DISPATCH_FUNCTION RpcInterface_table[] = - { - NdrServerCall2, - NdrServerCall2, - NdrServerCall2, - NdrServerCall2, - NdrServerCall2, - 0 - }; -static const RPC_DISPATCH_TABLE RpcInterface_v1_0_DispatchTable = - { - 5, - (RPC_DISPATCH_FUNCTION*)RpcInterface_table - }; - -static const SERVER_ROUTINE RpcInterface_ServerRoutineTable[] = - { - (SERVER_ROUTINE)RemoteOpen, - (SERVER_ROUTINE)RemoteClose, - (SERVER_ROUTINE)StartMetering, - (SERVER_ROUTINE)SetSamplePeriod, - (SERVER_ROUTINE)StopMetering, - }; - -static const MIDL_SERVER_INFO RpcInterface_ServerInfo = - { - &RpcInterface_StubDesc, - RpcInterface_ServerRoutineTable, - RpcInterface__MIDL_ProcFormatString.Format, - RpcInterface_FormatStringOffsetTable, - 0, - 0, - 0, - 0}; -#if _MSC_VER >= 1200 -#pragma warning(pop) -#endif - - -#endif /* defined(_M_AMD64)*/ - diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcServer.cpp b/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcServer.cpp deleted file mode 100644 index 0cad3578..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcServer.cpp +++ /dev/null @@ -1,320 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -#include "stdafx.h" -#include <stdlib.h> -#include <stdio.h> -#include <iostream> -#include "RpcInterface_h.h" -#include <windows.h> - -#include <sddl.h> -#include <securitybaseapi.h> -#include <AclAPI.h> -#include "RpcServer.h" - -using namespace RpcServer; - -#define DEFAULT_METERING_PERIOD 100 - -bool ShutdownRequested; -static RPC_BINDING_VECTOR* BindingVector = nullptr; - -void FreeSidArray(__inout_ecount(cSIDs) PSID* pSIDs, ULONG cSIDs) -{ - if (pSIDs != nullptr) - { - for (ULONG i = 0; i < cSIDs; i++) - { - LocalFree(pSIDs[i]); - - pSIDs[i] = nullptr; - } - - LocalFree(pSIDs); - - pSIDs = nullptr; - cSIDs = 0; - } -} - -// -// Routine to create RPC server and listen to incoming RPC calls -// -DWORD RpcServerStart() -{ - DWORD hResult = S_OK; - WCHAR* protocolSequence = L"ncalrpc"; - unsigned int minCalls = 1; - unsigned int dontWait = false; - ShutdownRequested = false; - - SID_IDENTIFIER_AUTHORITY SIDAuthWorld = SECURITY_WORLD_SID_AUTHORITY; - PSID everyoneSid = nullptr; - PSID* capabilitySids = nullptr; - DWORD capabilitySidCount = 0; - PSID* capabilityGroupSids = nullptr; - DWORD capabilityGroupSidCount = 0; - EXPLICIT_ACCESS ea[2] = {}; - PACL acl = nullptr; - SECURITY_DESCRIPTOR rpcSecurityDescriptor = {}; - - // When creating the RPC endpoint we want it to allow connections from any UWA that contains - // the custom capability SID in its process token. When a UWA declares the custom capability - // in its app manifest, it will later contain the SID form of that custom capability in its - // process token at runtime. By default, RPC endpoints don't allow UWAs (AppContainer processes) - // to connect to them, so we need to set the security on the endpoint to allow access to UWAs with the - // custom capability. - // - // To do this we'll perform the following steps: - // 1) Convert the custom capability name to a SID - // 2) Create a security descriptor using that SID, as well as other needed SIDs. This sample shows how to allow - // all 'non UWAs' access as well as UWAs containing the custom capability SID. - // 3) Create the RPC endpoint using that security descriptor - // - // To create the security descriptor we're roughly following this MSDN sample: - // https://msdn.microsoft.com/en-us/library/windows/desktop/aa446595(v=vs.85).aspx - - // Get the SID form of the custom capability. In this case we only expect one SID and - // we don't care about the capability group. - //INSERT DERIVE CAPABILTY SIDS FROM NAME HERE - - // Get the SID that represents 'everyone' (this doesn't include AppContainers) - if (!AllocateAndInitializeSid( - &SIDAuthWorld, 1, - SECURITY_WORLD_RID, - 0, 0, 0, 0, 0, 0, 0, - &everyoneSid)) - { - hResult = GetLastError(); - goto end; - } - - // Now create the Access Control List (ACL) for the Security descriptor - - // Everyone GENERIC_ALL access - ea[0].grfAccessMode = SET_ACCESS; - ea[0].grfAccessPermissions = GENERIC_ALL; - ea[0].grfInheritance = NO_INHERITANCE; - ea[0].Trustee.TrusteeForm = TRUSTEE_IS_SID; - ea[0].Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP; - ea[0].Trustee.ptstrName = static_cast<LPWSTR>(everyoneSid); - - // Custom capability GENERIC_ALL access - ea[1].grfAccessMode = SET_ACCESS; - ea[1].grfAccessPermissions = GENERIC_ALL; - ea[1].grfInheritance = NO_INHERITANCE; - ea[1].Trustee.TrusteeForm = TRUSTEE_IS_SID; - ea[1].Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN; - ea[1].Trustee.ptstrName = static_cast<LPWSTR>(everyoneSid); - - hResult = SetEntriesInAcl(ARRAYSIZE(ea), ea, nullptr, &acl); - - if (hResult != ERROR_SUCCESS) - { - goto end; - } - - // Initialize an empty security descriptor - if (!InitializeSecurityDescriptor(&rpcSecurityDescriptor, SECURITY_DESCRIPTOR_REVISION)) - { - hResult = GetLastError(); - goto end; - } - - // Assign the ACL to the security descriptor - if (!SetSecurityDescriptorDacl(&rpcSecurityDescriptor, TRUE, acl, FALSE)) - { - hResult = GetLastError(); - goto end; - } - - // - // Bind to LRPC using dynamic endpoints - // - hResult = RpcServerUseProtseqEp( - reinterpret_cast<RPC_WSTR>(protocolSequence), - RPC_C_PROTSEQ_MAX_REQS_DEFAULT, - reinterpret_cast<RPC_WSTR>(RPC_STATIC_ENDPOINT), - &rpcSecurityDescriptor); - - if (hResult != S_OK) - { - goto end; - } - - hResult = RpcServerRegisterIf3( - RpcInterface_v1_0_s_ifspec, - nullptr, - nullptr, - RPC_IF_AUTOLISTEN | RPC_IF_ALLOW_LOCAL_ONLY, - RPC_C_LISTEN_MAX_CALLS_DEFAULT, - 0, - nullptr, - &rpcSecurityDescriptor); - - if (hResult != S_OK) - { - goto end; - } - - hResult = RpcServerInqBindings(&BindingVector); - - if (hResult != S_OK) - { - goto end; - } - - hResult = RpcEpRegister( - RpcInterface_v1_0_s_ifspec, - BindingVector, - nullptr, - nullptr); - - if (hResult != S_OK) - { - goto end; - } - - hResult = RpcServerListen( - minCalls, - RPC_C_LISTEN_MAX_CALLS_DEFAULT, - dontWait); - - if (hResult == RPC_S_ALREADY_LISTENING) - { - hResult = RPC_S_OK; - } - -end: - - // Cleanup sids - FreeSidArray(capabilityGroupSids, capabilityGroupSidCount); - FreeSidArray(capabilitySids, capabilitySidCount); - - if (everyoneSid != nullptr) - { - FreeSid(everyoneSid); - } - - // cleanup acl - if (acl != nullptr) - { - LocalFree(acl); - } - - return hResult; -} - -// -// Notify rpc server to stop listening to incoming rpc calls -// -void RpcServerDisconnect() -{ - DWORD hResult = S_OK; - ShutdownRequested = true; - hResult = RpcServerUnregisterIf(RpcInterface_v1_0_s_ifspec, nullptr, 0); - - RpcEpUnregister(RpcInterface_v1_0_s_ifspec, BindingVector, nullptr); - - if (BindingVector != nullptr) - { - RpcBindingVectorFree(&BindingVector); - BindingVector = nullptr; - } -} - -// -// Rpc method to retrieve client context handle -// -void RemoteOpen( - _In_ handle_t hBinding, - _Out_ PPCONTEXT_HANDLE_TYPE pphContext) -{ - *pphContext = static_cast<PCONTEXT_HANDLE_TYPE *>(midl_user_allocate(sizeof(METERING_CONTEXT))); - METERING_CONTEXT* meteringContext = static_cast<METERING_CONTEXT *>(*pphContext); - meteringContext->metering = new Metering(DEFAULT_METERING_PERIOD); -} - -// -// Rpc method to close the client context handle -// -void RemoteClose(_Inout_ PPCONTEXT_HANDLE_TYPE pphContext) -{ - if (*pphContext == nullptr) - { - //Log error, client tried to close a NULL handle. - return; - } - - METERING_CONTEXT* meteringContext = static_cast<METERING_CONTEXT *>(*pphContext); - delete meteringContext->metering; - MIDL_user_free(meteringContext); - - // This tells the run-time, when it is marshalling the out - // parameters, that the context handle has been closed normally. - *pphContext = nullptr; -} - -// -// Routine to cleanup client context when client has died with active -// connection with server -// -void __RPC_USER PCONTEXT_HANDLE_TYPE_rundown( - _In_ PCONTEXT_HANDLE_TYPE phContext) -{ - StopMetering(phContext); - RemoteClose(&phContext); -} - -#pragma region METERING_RPCROUTINES - -void StartMetering( - _In_ PCONTEXT_HANDLE_TYPE phContext, - _In_ __int64 period, - _In_ __int64 context) -{ - std::cout << "start metering" << std::endl; - METERING_CONTEXT* meteringContext = static_cast<METERING_CONTEXT *>(phContext); - meteringContext->metering->StartMetering(period, context); - std::cout << "done metering" << std::endl; -} - -void SetSamplePeriod( - _In_ PCONTEXT_HANDLE_TYPE phContext, - _In_ __int64 period) -{ - METERING_CONTEXT* meteringContext = static_cast<METERING_CONTEXT *>(phContext); - meteringContext->metering->SetSamplePeriod(period); -} - - -void StopMetering(_In_ PCONTEXT_HANDLE_TYPE phContext) -{ - METERING_CONTEXT* meteringContext = static_cast<METERING_CONTEXT *>(phContext); - meteringContext->metering->StopMetering(); -} - -#pragma endregion METERING_RPCROUTINES - -/******************************************************/ -/* MIDL allocate and free */ -/******************************************************/ - -void __RPC_FAR * __RPC_USER midl_user_allocate(_In_ size_t len) -{ - return(malloc(len)); -} - -void __RPC_USER midl_user_free(_In_ void __RPC_FAR* ptr) -{ - free(ptr); -} diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcServer.h b/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcServer.h deleted file mode 100644 index bc7294db..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcServer.h +++ /dev/null @@ -1,16 +0,0 @@ -#include "metering.h" - -#define RPC_STATIC_ENDPOINT L"HsaSampleRpcEndpoint" - -// Client context used for making rpc calls using context handle -// https://msdn.microsoft.com/en-us/library/windows/desktop/aa378674(v=vs.85).aspx -typedef struct -{ - RpcServer::Metering* metering; -} METERING_CONTEXT; - -// Create a rpc server endpoint and listen to incoming rpc calls -DWORD RpcServerStart(); - -// Signal the rpc server to stop listening to incoming rpc calls -void RpcServerDisconnect(); diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcServer.vcxproj b/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcServer.vcxproj deleted file mode 100644 index b5c043dc..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcServer.vcxproj +++ /dev/null @@ -1,284 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|ARM"> - <Configuration>Debug</Configuration> - <Platform>ARM</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|ARM"> - <Configuration>Release</Configuration> - <Platform>ARM</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{ADFC4322-5F0E-5BFD-83DA-19B35EFD513B}</ProjectGuid> - <Keyword>Win32Proj</Keyword> - <RootNamespace>RpcServer</RootNamespace> - <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>v141</PlatformToolset> - <CharacterSet>Unicode</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>v141</PlatformToolset> - <CharacterSet>Unicode</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <UseDebugLibraries>false</UseDebugLibraries> - <PlatformToolset>v141</PlatformToolset> - <WholeProgramOptimization>true</WholeProgramOptimization> - <CharacterSet>Unicode</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <UseDebugLibraries>false</UseDebugLibraries> - <PlatformToolset>v141</PlatformToolset> - <WholeProgramOptimization>true</WholeProgramOptimization> - <CharacterSet>Unicode</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>v141</PlatformToolset> - <CharacterSet>Unicode</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <UseDebugLibraries>false</UseDebugLibraries> - <PlatformToolset>v141</PlatformToolset> - <WholeProgramOptimization>true</WholeProgramOptimization> - <CharacterSet>Unicode</CharacterSet> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Label="Shared"> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <LinkIncremental>true</LinkIncremental> - <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir> - <IntDir>$(Platform)\$(Configuration)\</IntDir> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> - <LinkIncremental>true</LinkIncremental> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <LinkIncremental>true</LinkIncremental> - <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <LinkIncremental>false</LinkIncremental> - <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir> - <IntDir>$(Platform)\$(Configuration)\</IntDir> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> - <LinkIncremental>false</LinkIncremental> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <LinkIncremental>false</LinkIncremental> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <PrecompiledHeader>Use</PrecompiledHeader> - <WarningLevel>Level3</WarningLevel> - <Optimization>Disabled</Optimization> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <SDLCheck>true</SDLCheck> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(OutDir)</AdditionalIncludeDirectories> - </ClCompile> - <Link> - <SubSystem>Console</SubSystem> - <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>onecoreuap.lib;%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies> - <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> - <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries);kernel32.lib;user32.lib;shell32.lib;gdi32.lib</IgnoreSpecificDefaultLibraries> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> - <ClCompile> - <PrecompiledHeader>Use</PrecompiledHeader> - <WarningLevel>Level3</WarningLevel> - <Optimization>Disabled</Optimization> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <SDLCheck>true</SDLCheck> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(OutDir)</AdditionalIncludeDirectories> - </ClCompile> - <Link> - <SubSystem>Console</SubSystem> - <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>onecoreuap.lib;%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies> - <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> - <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries);kernel32.lib;user32.lib;shell32.lib;gdi32.lib</IgnoreSpecificDefaultLibraries> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <ClCompile> - <PrecompiledHeader>Use</PrecompiledHeader> - <WarningLevel>Level3</WarningLevel> - <Optimization>Disabled</Optimization> - <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <SDLCheck>true</SDLCheck> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(OutDir)</AdditionalIncludeDirectories> - </ClCompile> - <Link> - <SubSystem>Console</SubSystem> - <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>onecoreuap.lib;%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies> - <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> - <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries);kernel32.lib;user32.lib;shell32.lib;gdi32.lib</IgnoreSpecificDefaultLibraries> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <WarningLevel>Level3</WarningLevel> - <PrecompiledHeader>Use</PrecompiledHeader> - <Optimization>MaxSpeed</Optimization> - <FunctionLevelLinking>true</FunctionLevelLinking> - <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <SDLCheck>true</SDLCheck> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(OutDir)</AdditionalIncludeDirectories> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - </ClCompile> - <Link> - <SubSystem>Console</SubSystem> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <OptimizeReferences>true</OptimizeReferences> - <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>onecoreuap.lib;%(AdditionalDependencies);ucrt.lib;rpcrt4.lib;libcmt.lib;libvcruntime.lib</AdditionalDependencies> - <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries> - <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries);kernel32.lib;user32.lib;shell32.lib;gdi32.lib</IgnoreSpecificDefaultLibraries> - <AdditionalOptions>/VERBOSE %(AdditionalOptions)</AdditionalOptions> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> - <ClCompile> - <WarningLevel>Level3</WarningLevel> - <PrecompiledHeader>Use</PrecompiledHeader> - <Optimization>MaxSpeed</Optimization> - <FunctionLevelLinking>true</FunctionLevelLinking> - <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);</PreprocessorDefinitions> - <SDLCheck>true</SDLCheck> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(OutDir)</AdditionalIncludeDirectories> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - </ClCompile> - <Link> - <SubSystem>Console</SubSystem> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <OptimizeReferences>true</OptimizeReferences> - <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>onecoreuap.lib;%(AdditionalDependencies);ucrt.lib;rpcrt4.lib;libcmt.lib;libvcruntime.lib</AdditionalDependencies> - <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries> - <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries);kernel32.lib;user32.lib;shell32.lib;gdi32.lib</IgnoreSpecificDefaultLibraries> - <AdditionalOptions>/VERBOSE %(AdditionalOptions)</AdditionalOptions> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <ClCompile> - <WarningLevel>Level3</WarningLevel> - <PrecompiledHeader>Use</PrecompiledHeader> - <Optimization>MaxSpeed</Optimization> - <FunctionLevelLinking>true</FunctionLevelLinking> - <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <SDLCheck>true</SDLCheck> - <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(OutDir)</AdditionalIncludeDirectories> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - </ClCompile> - <Link> - <SubSystem>Console</SubSystem> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <OptimizeReferences>true</OptimizeReferences> - <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>onecoreuap.lib;%(AdditionalDependencies);ucrt.lib;rpcrt4.lib;libcmt.lib;libvcruntime.lib</AdditionalDependencies> - <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries> - <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries);kernel32.lib;user32.lib;shell32.lib;gdi32.lib</IgnoreSpecificDefaultLibraries> - <AdditionalOptions>/VERBOSE %(AdditionalOptions)</AdditionalOptions> - </Link> - </ItemDefinitionGroup> - <ItemGroup> - <ClInclude Include="Metering.h" /> - <ClInclude Include="RpcServer.h" /> - <ClInclude Include="SampleService.h" /> - <ClInclude Include="ServiceBase.h" /> - <ClInclude Include="ServiceInstaller.h" /> - <ClInclude Include="stdafx.h" /> - <ClInclude Include="targetver.h" /> - </ItemGroup> - <ItemGroup> - <ClCompile Include="RpcInterface_s.c"> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NotUsing</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NotUsing</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="HsaService.cpp" /> - <ClCompile Include="Metering.cpp" /> - <ClCompile Include="RpcServer.cpp" /> - <ClCompile Include="SampleService.cpp" /> - <ClCompile Include="ServiceBase.cpp" /> - <ClCompile Include="ServiceInstaller.cpp" /> - <ClCompile Include="stdafx.cpp"> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader> - </ClCompile> - </ItemGroup> - <ItemGroup> - <None Include="RpcInterface.acf" /> - </ItemGroup> - <ItemGroup> - <Midl Include="RpcInterface.Idl" /> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project>
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcServer.vcxproj.filters b/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcServer.vcxproj.filters deleted file mode 100644 index 9644ad4e..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/RpcServer.vcxproj.filters +++ /dev/null @@ -1,76 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup> - <Filter Include="Source Files"> - <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> - <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> - </Filter> - <Filter Include="Header Files"> - <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> - <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions> - </Filter> - <Filter Include="Resource Files"> - <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> - <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> - </Filter> - </ItemGroup> - <ItemGroup> - <ClInclude Include="stdafx.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="targetver.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="Metering.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="RpcServer.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="SampleService.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="ServiceBase.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="ServiceInstaller.h"> - <Filter>Header Files</Filter> - </ClInclude> - </ItemGroup> - <ItemGroup> - <ClCompile Include="stdafx.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="HsaService.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="Metering.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="RpcServer.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="SampleService.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="ServiceBase.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="ServiceInstaller.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="RpcInterface_s.c"> - <Filter>Source Files</Filter> - </ClCompile> - </ItemGroup> - <ItemGroup> - <None Include="RpcInterface.acf"> - <Filter>Source Files</Filter> - </None> - </ItemGroup> - <ItemGroup> - <Midl Include="RpcInterface.Idl"> - <Filter>Source Files</Filter> - </Midl> - </ItemGroup> -</Project>
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/SampleService.cpp b/general/WinHEC 2017 Lab/Toaster Driver/Service/SampleService.cpp deleted file mode 100644 index 793a7009..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/SampleService.cpp +++ /dev/null @@ -1,155 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -#include "stdafx.h" - -#pragma region Includes -#include "SampleService.h" -#include "RpcServer.h" -#include <Evntrace.h> -#pragma endregion - -CSampleService::CSampleService( - PWSTR pszServiceName, - BOOL fCanStop, - BOOL fCanShutdown, - BOOL fCanPauseContinue) - : CServiceBase(pszServiceName, fCanStop, fCanShutdown, fCanPauseContinue) -{ -} - -void CSampleService::WriteEventLogEntry(PWSTR pszMessage, BYTE bLevel) -{ - if (IsConsoleRun()) - { - wprintf(L"%d: %ls\n", bLevel, pszMessage); - } - __super::WriteEventLogEntry(pszMessage, bLevel); -} - -CSampleService::~CSampleService(void) -{ -} - -// -// This is the thread pool work callback function. -// -VOID CALLBACK ServiceWorkerThread( - _In_ PTP_CALLBACK_INSTANCE /*Instance*/, - _In_ PVOID Parameter, - _In_ PTP_WORK /*Work*/) -{ - // - // Do something when the work callback is invoked. - // - { - _int64 status = RpcServerStart(); - if (status) - { - CSampleService* sampleService = static_cast<CSampleService *>(Parameter); - sampleService->Stop(); - } - } - - return; -} - -// -// FUNCTION: CSampleService::OnStart(DWORD, LPWSTR *) -// -// PURPOSE: The function is executed when a Start command is sent to the -// service by the SCM or when the operating system starts (for a service -// that starts automatically). It specifies actions to take when the -// service starts. In this code sample, OnStart logs a service-start -// message to the Application log, and queues the main service function for -// execution in a thread pool worker thread. -// -// PARAMETERS: -// * dwArgc - number of command line arguments -// * lpszArgv - array of command line arguments -// -// NOTE: A service application is designed to be long running. Therefore, -// it usually polls or monitors something in the system. The monitoring is -// set up in the OnStart method. However, OnStart does not actually do the -// monitoring. The OnStart method must return to the operating system after -// the service's operation has begun. It must not loop forever or block. To -// set up a simple monitoring mechanism, one general solution is to create -// a timer in OnStart. The timer would then raise events in your code -// periodically, at which time your service could do its monitoring. The -// other solution is to spawn a new thread to perform the main service -// functions, which is demonstrated in this code sample. -// -void CSampleService::OnStart( - _In_ DWORD dwArgc, - _In_ LPWSTR *lpszArgv) -{ - // Log a service start message to the Application log. - WriteEventLogEntry(L"CppWindowsService in OnStart", TRACE_LEVEL_INFORMATION); - - // Queue the main service function for execution in a worker thread. - PTP_WORK_CALLBACK workcallback = ServiceWorkerThread; - m_work = CreateThreadpoolWork(workcallback, this, nullptr); - - if (NULL == m_work) - { - // TODO: Capture get last error - WriteEventLogEntry(L"CreateThreadpoolWork failed", TRACE_LEVEL_ERROR); - } - - // - // Submit the work to the pool. Because this was a pre-allocated - // work item (using CreateThreadpoolWork), it is guaranteed to execute. - // - SubmitThreadpoolWork(m_work); -} - -// -// FUNCTION: CSampleService::ConsoleRun() -// -// PURPOSE: The function is executed to simulate OnStart in -// console mode. -// -void CSampleService::ConsoleRun() -{ - m_runningInConsole = true; - - WriteEventLogEntry(L"Starting Rpc Server..", TRACE_LEVEL_INFORMATION); - long status = RpcServerStart(); - - if (status) - { - printf_s("RpcServerConnect returned: 0x%x\n", status); - WriteEventLogEntry(L"Starting Rpc Server..", TRACE_LEVEL_INFORMATION); - exit(static_cast<int>(status)); - } -} - -// -// FUNCTION: CSampleService::OnStop() -// -// PURPOSE: The function is executed when a Stop command is sent to the -// service by SCM. It specifies actions to take when a service stops -// running. In this code sample, OnStop logs a service-stop message to the -// Application log, and waits for the finish of the main service function. -// -// COMMENTS: -// Be sure to periodically call ReportServiceStatus() with -// SERVICE_STOP_PENDING if the procedure is going to take long time. -// -void CSampleService::OnStop() -{ - // Log a service stop message to the Application log. - WriteEventLogEntry(L"CppWindowsService in OnStop", TRACE_LEVEL_INFORMATION); - - // Instruct server to stop listening to remote procedure calls and - // unregister rpc interface - RpcServerDisconnect(); -}
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/SampleService.h b/general/WinHEC 2017 Lab/Toaster Driver/Service/SampleService.h deleted file mode 100644 index 04621b3e..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/SampleService.h +++ /dev/null @@ -1,46 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -// Provides a sample service class that derives from the service base class - -// CServiceBase. The sample service logs the service start and stop -// information to the Application event log, and shows how to run the main -// function of the service in a thread pool worker thread. - -#pragma once - -#include "ServiceBase.h" - -class CSampleService : public CServiceBase -{ -public: - - CSampleService(PWSTR pszServiceName, - BOOL fCanStop = TRUE, - BOOL fCanShutdown = TRUE, - BOOL fCanPauseContinue = FALSE); - void ConsoleRun(); - bool IsConsoleRun() - { - return m_runningInConsole; - } - void WriteEventLogEntry(PWSTR pszMessage, BYTE bLevel) override; - virtual ~CSampleService(void); - -protected: - - virtual void OnStart(DWORD dwArgc, PWSTR *pszArgv) override; - virtual void OnStop() override; - - -private: - PTP_WORK m_work = nullptr; - bool m_runningInConsole = false; -};
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/ServiceBase.cpp b/general/WinHEC 2017 Lab/Toaster Driver/Service/ServiceBase.cpp deleted file mode 100644 index 117d740c..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/ServiceBase.cpp +++ /dev/null @@ -1,566 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -#include "stdafx.h" -#pragma region Includes - -#include "ServiceBase.h" -#include <assert.h> -#include <strsafe.h> -#include <evntprov.h> -#include <Evntrace.h> -#pragma endregion - -// -// HSA Service trace event provider -// {BE2E880E-F79F-4C30-9C95-09F003A0A7EA} -// -EXTERN_C __declspec(selectany) const GUID HSA_SERVICE_PROVIDER_GUID = { 0xbe2e880e, 0xf79f, 0x4c30,{ 0x9c, 0x95, 0x9, 0xf0, 0x3, 0xa0, 0xa7, 0xea } }; - -#pragma region Static Members - -// Initialize the singleton service instance. -CServiceBase *CServiceBase::s_service = nullptr; - - -// -// FUNCTION: CServiceBase::Run(CServiceBase &) -// -// PURPOSE: Register the executable for a service with the Service Control -// Manager (SCM). After you call Run(ServiceBase), the SCM issues a Start -// command, which results in a call to the OnStart method in the service. -// This method blocks until the service has stopped. -// -// PARAMETERS: -// * service - the reference to a CServiceBase object. It will become the -// singleton service instance of this service application. -// -// RETURN VALUE: If the function succeeds, the return value is TRUE. If the -// function fails, the return value is FALSE. To get extended error -// information, call GetLastError. -// -BOOL CServiceBase::Run(CServiceBase &service) -{ - s_service = &service; - - SERVICE_TABLE_ENTRY serviceTable[] = - { - { service.m_name, ServiceMain }, - { nullptr, nullptr } - }; - - // Connects the main thread of a service process to the service control - // manager, which causes the thread to be the service control dispatcher - // thread for the calling process. This call returns when the service has - // stopped. The process should simply terminate when the call returns. - return StartServiceCtrlDispatcher(serviceTable); -} - - -// -// FUNCTION: CServiceBase::ServiceMain(DWORD, PWSTR *) -// -// PURPOSE: Entry point for the service. It registers the handler function -// for the service and starts the service. -// -// PARAMETERS: -// * dwArgc - number of command line arguments -// * lpszArgv - array of command line arguments -// -void WINAPI CServiceBase::ServiceMain(DWORD dwArgc, PWSTR *pszArgv) -{ - assert(s_service != NULL); - - // Register the handler function for the service - s_service->m_statusHandle = RegisterServiceCtrlHandler( - s_service->m_name, ServiceCtrlHandler); - - if (s_service->m_statusHandle == NULL) - { - throw GetLastError(); - } - - // Start the service. - s_service->Start(dwArgc, pszArgv); -} - - -// -// FUNCTION: CServiceBase::ServiceCtrlHandler(DWORD) -// -// PURPOSE: The function is called by the SCM whenever a control code is -// sent to the service. -// -// PARAMETERS: -// * dwCtrlCode - the control code. This parameter can be one of the -// following values: -// -// SERVICE_CONTROL_CONTINUE -// SERVICE_CONTROL_INTERROGATE -// SERVICE_CONTROL_NETBINDADD -// SERVICE_CONTROL_NETBINDDISABLE -// SERVICE_CONTROL_NETBINDREMOVE -// SERVICE_CONTROL_PARAMCHANGE -// SERVICE_CONTROL_PAUSE -// SERVICE_CONTROL_SHUTDOWN -// SERVICE_CONTROL_STOP -// -// This parameter can also be a user-defined control code ranges from 128 -// to 255. -// -void WINAPI CServiceBase::ServiceCtrlHandler(DWORD dwCtrl) -{ - switch (dwCtrl) - { - case SERVICE_CONTROL_STOP: s_service->Stop(); break; - case SERVICE_CONTROL_PAUSE: s_service->Pause(); break; - case SERVICE_CONTROL_CONTINUE: s_service->Continue(); break; - case SERVICE_CONTROL_SHUTDOWN: s_service->Shutdown(); break; - case SERVICE_CONTROL_INTERROGATE: break; - default: break; - } -} - -#pragma endregion - - -#pragma region Service Constructor and Destructor - -// -// FUNCTION: CServiceBase::CServiceBase(PWSTR, BOOL, BOOL, BOOL) -// -// PURPOSE: The constructor of CServiceBase. It initializes a new instance -// of the CServiceBase class. The optional parameters (fCanStop, -/// fCanShutdown and fCanPauseContinue) allow you to specify whether the -// service can be stopped, paused and continued, or be notified when system -// shutdown occurs. -// -// PARAMETERS: -// * pszServiceName - the name of the service -// * fCanStop - the service can be stopped -// * fCanShutdown - the service is notified when system shutdown occurs -// * fCanPauseContinue - the service can be paused and continued -// -CServiceBase::CServiceBase( - PWSTR pszServiceName, - BOOL fCanStop, - BOOL fCanShutdown, - BOOL fCanPauseContinue) -{ - // Service name must be a valid string and cannot be NULL. - m_name = (pszServiceName == nullptr) ? L"" : pszServiceName; - - m_statusHandle = nullptr; - - // The service runs in its own process. - m_status.dwServiceType = SERVICE_WIN32_OWN_PROCESS; - - // The service is starting. - m_status.dwCurrentState = SERVICE_START_PENDING; - - // The accepted commands of the service. - DWORD dwControlsAccepted = 0; - if (fCanStop) - dwControlsAccepted |= SERVICE_ACCEPT_STOP; - if (fCanShutdown) - dwControlsAccepted |= SERVICE_ACCEPT_SHUTDOWN; - if (fCanPauseContinue) - dwControlsAccepted |= SERVICE_ACCEPT_PAUSE_CONTINUE; - m_status.dwControlsAccepted = dwControlsAccepted; - - m_status.dwWin32ExitCode = NO_ERROR; - m_status.dwServiceSpecificExitCode = 0; - m_status.dwCheckPoint = 0; - m_status.dwWaitHint = 0; - - NTSTATUS status = EventRegister(&HSA_SERVICE_PROVIDER_GUID, - nullptr, - nullptr, - &m_etwRegHandle); - if (ERROR_SUCCESS != status) - { - wprintf(L"Provider not registered. EventRegister failed with %d\n", status); - } -} - - -// -// FUNCTION: CServiceBase::~CServiceBase() -// -// PURPOSE: The virtual destructor of CServiceBase. -// -CServiceBase::~CServiceBase(void) -{ - if (m_etwRegHandle != NULL) - { - EventUnregister(m_etwRegHandle); - } -} - -#pragma endregion - - -#pragma region Service Start, Stop, Pause, Continue, and Shutdown - -// -// FUNCTION: CServiceBase::Start(DWORD, PWSTR *) -// -// PURPOSE: The function starts the service. It calls the OnStart virtual -// function in which you can specify the actions to take when the service -// starts. If an error occurs during the startup, the error will be logged -// in the Application event log, and the service will be stopped. -// -// PARAMETERS: -// * dwArgc - number of command line arguments -// * lpszArgv - array of command line arguments -// -void CServiceBase::Start(DWORD dwArgc, PWSTR *pszArgv) -{ - WriteEventLogEntry(L"Service trying to start.", TRACE_LEVEL_ERROR); - try - { - // Tell SCM that the service is starting. - SetServiceStatus(SERVICE_START_PENDING); - - // Perform service-specific initialization. - OnStart(dwArgc, pszArgv); - - // Tell SCM that the service is started. - SetServiceStatus(SERVICE_RUNNING); - } - catch (DWORD dwError) - { - // Log the error. - WriteErrorLogEntry(L"Service Start", dwError); - - // Set the service status to be stopped. - SetServiceStatus(SERVICE_STOPPED, dwError); - } - catch (...) - { - // Log the error. - WriteEventLogEntry(L"Service failed to start.", TRACE_LEVEL_ERROR); - - // Set the service status to be stopped. - SetServiceStatus(SERVICE_STOPPED); - } -} - - -// -// FUNCTION: CServiceBase::OnStart(DWORD, PWSTR *) -// -// PURPOSE: When implemented in a derived class, executes when a Start -// command is sent to the service by the SCM or when the operating system -// starts (for a service that starts automatically). Specifies actions to -// take when the service starts. Be sure to periodically call -// CServiceBase::SetServiceStatus() with SERVICE_START_PENDING if the -// procedure is going to take long time. You may also consider spawning a -// new thread in OnStart to perform time-consuming initialization tasks. -// -// PARAMETERS: -// * dwArgc - number of command line arguments -// * lpszArgv - array of command line arguments -// -void CServiceBase::OnStart(DWORD dwArgc, PWSTR *pszArgv) -{ -} - - -// -// FUNCTION: CServiceBase::Stop() -// -// PURPOSE: The function stops the service. It calls the OnStop virtual -// function in which you can specify the actions to take when the service -// stops. If an error occurs, the error will be logged in the Application -// event log, and the service will be restored to the original state. -// -void CServiceBase::Stop() -{ - DWORD dwOriginalState = m_status.dwCurrentState; - try - { - // Tell SCM that the service is stopping. - SetServiceStatus(SERVICE_STOP_PENDING); - - // Perform service-specific stop operations. - OnStop(); - - // Tell SCM that the service is stopped. - SetServiceStatus(SERVICE_STOPPED); - } - catch (DWORD dwError) - { - // Log the error. - WriteErrorLogEntry(L"Service Stop", dwError); - - // Set the orginal service status. - SetServiceStatus(dwOriginalState); - } - catch (...) - { - // Log the error. - WriteEventLogEntry(L"Service failed to stop.", TRACE_LEVEL_ERROR); - - // Set the orginal service status. - SetServiceStatus(dwOriginalState); - } -} - - -// -// FUNCTION: CServiceBase::OnStop() -// -// PURPOSE: When implemented in a derived class, executes when a Stop -// command is sent to the service by the SCM. Specifies actions to take -// when a service stops running. Be sure to periodically call -// CServiceBase::SetServiceStatus() with SERVICE_STOP_PENDING if the -// procedure is going to take long time. -// -void CServiceBase::OnStop() -{ -} - - -// -// FUNCTION: CServiceBase::Pause() -// -// PURPOSE: The function pauses the service if the service supports pause -// and continue. It calls the OnPause virtual function in which you can -// specify the actions to take when the service pauses. If an error occurs, -// the error will be logged in the Application event log, and the service -// will become running. -// -void CServiceBase::Pause() -{ - try - { - // Tell SCM that the service is pausing. - SetServiceStatus(SERVICE_PAUSE_PENDING); - - // Perform service-specific pause operations. - OnPause(); - - // Tell SCM that the service is paused. - SetServiceStatus(SERVICE_PAUSED); - } - catch (DWORD dwError) - { - // Log the error. - WriteErrorLogEntry(L"Service Pause", dwError); - - // Tell SCM that the service is still running. - SetServiceStatus(SERVICE_RUNNING); - } - catch (...) - { - // Log the error. - WriteEventLogEntry(L"Service failed to pause.", TRACE_LEVEL_ERROR); - - // Tell SCM that the service is still running. - SetServiceStatus(SERVICE_RUNNING); - } -} - - -// -// FUNCTION: CServiceBase::OnPause() -// -// PURPOSE: When implemented in a derived class, executes when a Pause -// command is sent to the service by the SCM. Specifies actions to take -// when a service pauses. -// -void CServiceBase::OnPause() -{ -} - - -// -// FUNCTION: CServiceBase::Continue() -// -// PURPOSE: The function resumes normal functioning after being paused if -// the service supports pause and continue. It calls the OnContinue virtual -// function in which you can specify the actions to take when the service -// continues. If an error occurs, the error will be logged in the -// Application event log, and the service will still be paused. -// -void CServiceBase::Continue() -{ - try - { - // Tell SCM that the service is resuming. - SetServiceStatus(SERVICE_CONTINUE_PENDING); - - // Perform service-specific continue operations. - OnContinue(); - - // Tell SCM that the service is running. - SetServiceStatus(SERVICE_RUNNING); - } - catch (DWORD dwError) - { - // Log the error. - WriteErrorLogEntry(L"Service Continue", dwError); - - // Tell SCM that the service is still paused. - SetServiceStatus(SERVICE_PAUSED); - } - catch (...) - { - // Log the error. - WriteEventLogEntry(L"Service failed to resume.", TRACE_LEVEL_ERROR); - - // Tell SCM that the service is still paused. - SetServiceStatus(SERVICE_PAUSED); - } -} - - -// -// FUNCTION: CServiceBase::OnContinue() -// -// PURPOSE: When implemented in a derived class, OnContinue runs when a -// Continue command is sent to the service by the SCM. Specifies actions to -// take when a service resumes normal functioning after being paused. -// -void CServiceBase::OnContinue() -{ -} - - -// -// FUNCTION: CServiceBase::Shutdown() -// -// PURPOSE: The function executes when the system is shutting down. It -// calls the OnShutdown virtual function in which you can specify what -// should occur immediately prior to the system shutting down. If an error -// occurs, the error will be logged in the Application event log. -// -void CServiceBase::Shutdown() -{ - try - { - // Perform service-specific shutdown operations. - OnShutdown(); - - // Tell SCM that the service is stopped. - SetServiceStatus(SERVICE_STOPPED); - } - catch (DWORD dwError) - { - // Log the error. - WriteErrorLogEntry(L"Service Shutdown", dwError); - } - catch (...) - { - // Log the error. - WriteEventLogEntry(L"Service failed to shut down.", TRACE_LEVEL_ERROR); - } -} - - -// -// FUNCTION: CServiceBase::OnShutdown() -// -// PURPOSE: When implemented in a derived class, executes when the system -// is shutting down. Specifies what should occur immediately prior to the -// system shutting down. -// -void CServiceBase::OnShutdown() -{ -} - -#pragma endregion - - -#pragma region Helper Functions - -// -// FUNCTION: CServiceBase::SetServiceStatus(DWORD, DWORD, DWORD) -// -// PURPOSE: The function sets the service status and reports the status to -// the SCM. -// -// PARAMETERS: -// * dwCurrentState - the state of the service -// * dwWin32ExitCode - error code to report -// * dwWaitHint - estimated time for pending operation, in milliseconds -// -void CServiceBase::SetServiceStatus( - _In_ DWORD dwCurrentState, - _In_ DWORD dwWin32ExitCode, - _In_ DWORD dwWaitHint) -{ - static DWORD dwCheckPoint = 1; - - // Fill in the SERVICE_STATUS structure of the service. - - m_status.dwCurrentState = dwCurrentState; - m_status.dwWin32ExitCode = dwWin32ExitCode; - m_status.dwWaitHint = dwWaitHint; - - m_status.dwCheckPoint = - ((dwCurrentState == SERVICE_RUNNING) || - (dwCurrentState == SERVICE_STOPPED)) ? - 0 : dwCheckPoint++; - - // Report the status of the service to the SCM. - ::SetServiceStatus(m_statusHandle, &m_status); -} - - -// -// FUNCTION: CServiceBase::WriteEventLogEntry(PWSTR, WORD) -// -// PURPOSE: Log an event. -// -// PARAMETERS: -// * pszMessage - string message to be logged. -// * wType - the type of event to be logged. The parameter can be one of -// the following values. -// -// EVENTLOG_SUCCESS -// EVENTLOG_AUDIT_FAILURE -// EVENTLOG_AUDIT_SUCCESS -// EVENTLOG_ERROR_TYPE -// EVENTLOG_INFORMATION_TYPE -// EVENTLOG_WARNING_TYPE -// -void CServiceBase::WriteEventLogEntry( - _In_ PWSTR pszMessage, - _In_ BYTE bLevel) -{ - if (m_etwRegHandle != NULL) - { - EventWriteString(m_etwRegHandle, bLevel, 0, pszMessage); - } -} - -// -// FUNCTION: CServiceBase::WriteErrorLogEntry(PWSTR, DWORD) -// -// PURPOSE: Log an event. -// -// PARAMETERS: -// * pszFunction - the function that gives the error -// * dwError - the error code -// -void CServiceBase::WriteErrorLogEntry( - _In_ PWSTR pszFunction, - _In_ DWORD dwError) -{ - wchar_t szMessage[260]; - StringCchPrintf(szMessage, ARRAYSIZE(szMessage), - L"%s failed w/err 0x%08lx", pszFunction, dwError); - WriteEventLogEntry(szMessage, TRACE_LEVEL_ERROR); -} - -#pragma endregion
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/ServiceBase.h b/general/WinHEC 2017 Lab/Toaster Driver/Service/ServiceBase.h deleted file mode 100644 index ebae808e..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/ServiceBase.h +++ /dev/null @@ -1,121 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -// Provides a base class for a service that will exist as part of a service -// application. CServiceBase must be derived from when creating a new service -// class. - -#pragma once - -#include <windows.h> -#include <evntprov.h> - -class CServiceBase -{ -public: - - // Register the executable for a service with the Service Control Manager - // (SCM). After you call Run(ServiceBase), the SCM issues a Start command, - // which results in a call to the OnStart method in the service. This - // method blocks until the service has stopped. - static BOOL Run(CServiceBase& service); - - // Service object constructor. The optional parameters (fCanStop, - // fCanShutdown and fCanPauseContinue) allow you to specify whether the - // service can be stopped, paused and continued, or be notified when - // system shutdown occurs. - CServiceBase(PWSTR pszServiceName, - BOOL fCanStop = TRUE, - BOOL fCanShutdown = TRUE, - BOOL fCanPauseContinue = FALSE); - - // Service object destructor. - virtual ~CServiceBase(void); - - // Stop the service. - void Stop(); - -protected: - - // When implemented in a derived class, executes when a Start command is - // sent to the service by the SCM or when the operating system starts - // (for a service that starts automatically). Specifies actions to take - // when the service starts. - virtual void OnStart(DWORD dwArgc, PWSTR *pszArgv); - - // When implemented in a derived class, executes when a Stop command is - // sent to the service by the SCM. Specifies actions to take when a - // service stops running. - virtual void OnStop(); - - // When implemented in a derived class, executes when a Pause command is - // sent to the service by the SCM. Specifies actions to take when a - // service pauses. - virtual void OnPause(); - - // When implemented in a derived class, OnContinue runs when a Continue - // command is sent to the service by the SCM. Specifies actions to take - // when a service resumes normal functioning after being paused. - virtual void OnContinue(); - - // When implemented in a derived class, executes when the system is - // shutting down. Specifies what should occur immediately prior to the - // system shutting down. - virtual void OnShutdown(); - - // Set the service status and report the status to the SCM. - void SetServiceStatus(DWORD dwCurrentState, - DWORD dwWin32ExitCode = NO_ERROR, - DWORD dwWaitHint = 0); - - // Log an event. - virtual void WriteEventLogEntry(PWSTR pszMessage, BYTE bLevel); - - // Log an event. - void WriteErrorLogEntry(PWSTR pszFunction, - DWORD dwError = GetLastError()); - -private: - - // Entry point for the service. It registers the handler function for the - // service and starts the service. - static void WINAPI ServiceMain(DWORD dwArgc, LPWSTR *lpszArgv); - - // The function is called by the SCM whenever a control code is sent to - // the service. - static void WINAPI ServiceCtrlHandler(DWORD dwCtrl); - - // Start the service. - void Start(DWORD dwArgc, PWSTR *pszArgv); - - // Pause the service. - void Pause(); - - // Resume the service after being paused. - void Continue(); - - // Execute when the system is shutting down. - void Shutdown(); - - // The singleton service instance. - static CServiceBase *s_service; - - // The name of the service - PWSTR m_name; - - // The status of the service - SERVICE_STATUS m_status; - - // The service status handle - SERVICE_STATUS_HANDLE m_statusHandle; - - REGHANDLE m_etwRegHandle; -};
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/ServiceInstaller.cpp b/general/WinHEC 2017 Lab/Toaster Driver/Service/ServiceInstaller.cpp deleted file mode 100644 index 27b107a9..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/ServiceInstaller.cpp +++ /dev/null @@ -1,191 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -#include "stdafx.h" -#pragma region "Includes" - -#include <stdio.h> -#include <windows.h> -#include "ServiceInstaller.h" -#pragma endregion - - -// -// FUNCTION: InstallService -// -// PURPOSE: Install the current application as a service to the local -// service control manager database. -// -// PARAMETERS: -// * pszServiceName - the name of the service to be installed -// * pszDisplayName - the display name of the service -// * dwStartType - the service start option. This parameter can be one of -// the following values: SERVICE_AUTO_START, SERVICE_BOOT_START, -// SERVICE_DEMAND_START, SERVICE_DISABLED, SERVICE_SYSTEM_START. -// * pszDependencies - a pointer to a double null-terminated array of null- -// separated names of services or load ordering groups that the system -// must start before this service. -// * pszAccount - the name of the account under which the service runs. -// * pszPassword - the password to the account name. -// -// NOTE: If the function fails to install the service, it prints the error -// in the standard output stream for users to diagnose the problem. -// -void InstallService( - _In_ PWSTR pszServiceName, - _In_ PWSTR pszDisplayName, - _In_ DWORD dwStartType, - _In_ PWSTR pszDependencies, - _In_ PWSTR pszAccount, - _In_ PWSTR pszPassword) -{ - wchar_t szPath[MAX_PATH]; - SC_HANDLE schSCManager = nullptr; - SC_HANDLE schService = nullptr; - - if (GetModuleFileName(nullptr, szPath, ARRAYSIZE(szPath)) == 0) - { - wprintf(L"GetModuleFileName failed w/err 0x%08lx\n", GetLastError()); - goto Cleanup; - } - - // Open the local default service control manager database - schSCManager = OpenSCManager(nullptr, nullptr, SC_MANAGER_CONNECT | - SC_MANAGER_CREATE_SERVICE); - if (schSCManager == nullptr) - { - wprintf(L"OpenSCManager failed w/err 0x%08lx\n", GetLastError()); - goto Cleanup; - } - - // Install the service into SCM by calling CreateService - schService = CreateService( - schSCManager, // SCManager database - pszServiceName, // Name of service - pszDisplayName, // Name to display - SERVICE_QUERY_STATUS, // Desired access - SERVICE_WIN32_OWN_PROCESS, // Service type - dwStartType, // Service start type - SERVICE_ERROR_NORMAL, // Error control type - szPath, // Service's binary - nullptr, // No load ordering group - nullptr, // No tag identifier - pszDependencies, // Dependencies - pszAccount, // Service running account - pszPassword // Password of the account - ); - - if (schService == nullptr) - { - wprintf(L"CreateService failed w/err 0x%08lx\n", GetLastError()); - goto Cleanup; - } - - wprintf(L"%s is installed.\n", pszServiceName); - -Cleanup: - // Centralized cleanup for all allocated resources. - if (schSCManager) - { - CloseServiceHandle(schSCManager); - schSCManager = nullptr; - } - if (schService) - { - CloseServiceHandle(schService); - schService = nullptr; - } -} - - -// -// FUNCTION: UninstallService -// -// PURPOSE: Stop and remove the service from the local service control -// manager database. -// -// PARAMETERS: -// * pszServiceName - the name of the service to be removed. -// -// NOTE: If the function fails to uninstall the service, it prints the -// error in the standard output stream for users to diagnose the problem. -// -void UninstallService(_In_ PWSTR pszServiceName) -{ - SC_HANDLE schSCManager = nullptr; - SC_HANDLE schService = nullptr; - SERVICE_STATUS ssSvcStatus = {}; - - // Open the local default service control manager database - schSCManager = OpenSCManager(nullptr, nullptr, SC_MANAGER_CONNECT); - if (schSCManager == nullptr) - { - wprintf(L"OpenSCManager failed w/err 0x%08lx\n", GetLastError()); - goto Cleanup; - } - - // Open the service with delete, stop, and query status permissions - schService = OpenService(schSCManager, pszServiceName, SERVICE_STOP | - SERVICE_QUERY_STATUS | DELETE); - if (schService == nullptr) - { - wprintf(L"OpenService failed w/err 0x%08lx\n", GetLastError()); - goto Cleanup; - } - - // Try to stop the service - if (ControlService(schService, SERVICE_CONTROL_STOP, &ssSvcStatus)) - { - wprintf(L"Stopping %s.", pszServiceName); - Sleep(1000); - - while (QueryServiceStatus(schService, &ssSvcStatus)) - { - if (ssSvcStatus.dwCurrentState == SERVICE_STOP_PENDING) - { - wprintf(L"."); - Sleep(1000); - } - else break; - } - - if (ssSvcStatus.dwCurrentState == SERVICE_STOPPED) - { - wprintf(L"\n%s is stopped.\n", pszServiceName); - } - else - { - wprintf(L"\n%s failed to stop.\n", pszServiceName); - } - } - - // Now remove the service by calling DeleteService. - if (!DeleteService(schService)) - { - wprintf(L"DeleteService failed w/err 0x%08lx\n", GetLastError()); - goto Cleanup; - } - - wprintf(L"%s is removed.\n", pszServiceName); - -Cleanup: - // Centralized cleanup for all allocated resources. - if (schSCManager) - { - CloseServiceHandle(schSCManager); - schSCManager = nullptr; - } - if (schService) - { - CloseServiceHandle(schService); - schService = nullptr; - } -}
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/ServiceInstaller.h b/general/WinHEC 2017 Lab/Toaster Driver/Service/ServiceInstaller.h deleted file mode 100644 index af6507e6..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/ServiceInstaller.h +++ /dev/null @@ -1,57 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -// The file declares functions that install and uninstall the service. - -#pragma once - -// -// FUNCTION: InstallService -// -// PURPOSE: Install the current application as a service to the local -// service control manager database. -// -// PARAMETERS: -// * pszServiceName - the name of the service to be installed -// * pszDisplayName - the display name of the service -// * dwStartType - the service start option. This parameter can be one of -// the following values: SERVICE_AUTO_START, SERVICE_BOOT_START, -// SERVICE_DEMAND_START, SERVICE_DISABLED, SERVICE_SYSTEM_START. -// * pszDependencies - a pointer to a double null-terminated array of null- -// separated names of services or load ordering groups that the system -// must start before this service. -// * pszAccount - the name of the account under which the service runs. -// * pszPassword - the password to the account name. -// -// NOTE: If the function fails to install the service, it prints the error -// in the standard output stream for users to diagnose the problem. -// -void InstallService(PWSTR pszServiceName, - PWSTR pszDisplayName, - DWORD dwStartType, - PWSTR pszDependencies, - PWSTR pszAccount, - PWSTR pszPassword); - - -// -// FUNCTION: UninstallService -// -// PURPOSE: Stop and remove the service from the local service control -// manager database. -// -// PARAMETERS: -// * pszServiceName - the name of the service to be removed. -// -// NOTE: If the function fails to uninstall the service, it prints the -// error in the standard output stream for users to diagnose the problem. -// -void UninstallService(PWSTR pszServiceName); diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/stdafx.cpp b/general/WinHEC 2017 Lab/Toaster Driver/Service/stdafx.cpp deleted file mode 100644 index ce19a949..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/stdafx.cpp +++ /dev/null @@ -1,8 +0,0 @@ -// stdafx.cpp : source file that includes just the standard includes -// RpcServer.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - -// TODO: reference any additional headers you need in STDAFX.H -// and not in this file diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/stdafx.h b/general/WinHEC 2017 Lab/Toaster Driver/Service/stdafx.h deleted file mode 100644 index 306c4330..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/stdafx.h +++ /dev/null @@ -1,15 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#pragma once - -#include "targetver.h" - -#include <stdio.h> -#include <tchar.h> - -#define NOMINMAX // disable min and max macros in windows.h - -extern bool ShutdownRequested; diff --git a/general/WinHEC 2017 Lab/Toaster Driver/Service/targetver.h b/general/WinHEC 2017 Lab/Toaster Driver/Service/targetver.h deleted file mode 100644 index 87c0086d..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/Service/targetver.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -// Including SDKDDKVer.h defines the highest available Windows platform. - -// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and -// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. - -#include <SDKDDKVer.h> diff --git a/general/WinHEC 2017 Lab/Toaster Driver/toaster.sln b/general/WinHEC 2017 Lab/Toaster Driver/toaster.sln deleted file mode 100644 index 35e5dcbc..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/toaster.sln +++ /dev/null @@ -1,40 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26430.12 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "toaster", "toaster\toaster.vcxproj", "{2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|ARM = Debug|ARM - Debug|ARM64 = Debug|ARM64 - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|ARM = Release|ARM - Release|ARM64 = Release|ARM64 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}.Debug|ARM.ActiveCfg = Debug|ARM - {2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}.Debug|ARM.Build.0 = Debug|ARM - {2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}.Debug|ARM64.Build.0 = Debug|ARM64 - {2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}.Debug|x64.ActiveCfg = Debug|x64 - {2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}.Debug|x64.Build.0 = Debug|x64 - {2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}.Debug|x86.ActiveCfg = Debug|Win32 - {2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}.Debug|x86.Build.0 = Debug|Win32 - {2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}.Release|ARM.ActiveCfg = Release|ARM - {2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}.Release|ARM.Build.0 = Release|ARM - {2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}.Release|ARM64.ActiveCfg = Release|ARM64 - {2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}.Release|ARM64.Build.0 = Release|ARM64 - {2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}.Release|x64.ActiveCfg = Release|x64 - {2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}.Release|x64.Build.0 = Release|x64 - {2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}.Release|x86.ActiveCfg = Release|Win32 - {2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/general/WinHEC 2017 Lab/Toaster Driver/toaster/driver.h b/general/WinHEC 2017 Lab/Toaster Driver/toaster/driver.h deleted file mode 100644 index 8e7ade01..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/toaster/driver.h +++ /dev/null @@ -1,80 +0,0 @@ -/*++ -Copyright (c) 1990-2000 Microsoft Corporation All Rights Reserved - -Module Name: - - driver.h - -Abstract: - - This module contains the common declarations for the - bus, function and filter drivers. - -Environment: - - kernel mode only - ---*/ - -//#include "public.h" - -// -// Define an Interface Guid to access the proprietary toaster interface. -// This guid is used to identify a specific interface in IRP_MN_QUERY_INTERFACE -// handler. -// - -DEFINE_GUID(GUID_TOASTER_INTERFACE_STANDARD, - 0xe0b27630, 0x5434, 0x11d3, 0xb8, 0x90, 0x0, 0xc0, 0x4f, 0xad, 0x51, 0x71); -// {E0B27630-5434-11d3-B890-00C04FAD5171} - - -// -// GUID definition are required to be outside of header inclusion pragma to avoid -// error during precompiled headers. -// - -#ifndef __DRIVER_H -#define __DRIVER_H - -// -// Define Interface reference/dereference routines for -// Interfaces exported by IRP_MN_QUERY_INTERFACE -// - -typedef VOID (*PINTERFACE_REFERENCE)(PVOID Context); -typedef VOID (*PINTERFACE_DEREFERENCE)(PVOID Context); - -typedef -BOOLEAN -(*PTOASTER_GET_CRISPINESS_LEVEL)( - IN PVOID Context, - OUT PUCHAR Level - ); - -typedef -BOOLEAN -(*PTOASTER_SET_CRISPINESS_LEVEL)( - IN PVOID Context, - OUT UCHAR Level - ); - -typedef -BOOLEAN -(*PTOASTER_IS_CHILD_PROTECTED)( - IN PVOID Context - ); - -// -// Interface for getting and setting power level etc., -// -typedef struct _TOASTER_INTERFACE_STANDARD { - INTERFACE InterfaceHeader; - PTOASTER_GET_CRISPINESS_LEVEL GetCrispinessLevel; - PTOASTER_SET_CRISPINESS_LEVEL SetCrispinessLevel; - PTOASTER_IS_CHILD_PROTECTED IsSafetyLockEnabled; //): -} TOASTER_INTERFACE_STANDARD, *PTOASTER_INTERFACE_STANDARD; - - -#endif - diff --git a/general/WinHEC 2017 Lab/Toaster Driver/toaster/public.h b/general/WinHEC 2017 Lab/Toaster Driver/toaster/public.h deleted file mode 100644 index 0628f95f..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/toaster/public.h +++ /dev/null @@ -1,167 +0,0 @@ -/*++ -Copyright (c) 1990-2000 Microsoft Corporation All Rights Reserved - -Module Name: - - public.h - -Abstract: - - This module contains the common declarations shared by driver - and user applications. - -Environment: - - user and kernel - ---*/ - -// -// Define an Interface Guid for bus enumerator class. -// This GUID is used to register (IoRegisterDeviceInterface) -// an instance of an interface so that enumerator application -// can send an ioctl to the bus driver. -// - -DEFINE_GUID (GUID_DEVINTERFACE_BUSENUM_TOASTER, - 0xD35F7840, 0x6A0C, 0x11d2, 0xB8, 0x41, 0x00, 0xC0, 0x4F, 0xAD, 0x51, 0x71); -// {D35F7840-6A0C-11d2-B841-00C04FAD5171} - -// -// Define an Interface Guid for toaster device class. -// This GUID is used to register (IoRegisterDeviceInterface) -// an instance of an interface so that user application -// can control the toaster device. -// - -DEFINE_GUID (GUID_DEVINTERFACE_TOASTER, - 0x781EF630, 0x72B2, 0x11d2, 0xB8, 0x52, 0x00, 0xC0, 0x4F, 0xAD, 0x51, 0x71); -//{781EF630-72B2-11d2-B852-00C04FAD5171} - -// -// Define a Setup Class GUID for Toaster Class. This is same -// as the TOASTSER CLASS guid in the INF files. -// - -DEFINE_GUID (GUID_DEVCLASS_TOASTER, - 0xB85B7C50, 0x6A01, 0x11d2, 0xB8, 0x41, 0x00, 0xC0, 0x4F, 0xAD, 0x51, 0x71); -//{B85B7C50-6A01-11d2-B841-00C04FAD5171} - -// -// Define a WMI GUID to get busenum info. -// - -DEFINE_GUID (TOASTER_BUS_WMI_STD_DATA_GUID, - 0x0006A660, 0x8F12, 0x11d2, 0xB8, 0x54, 0x00, 0xC0, 0x4F, 0xAD, 0x51, 0x71); -//{0006A660-8F12-11d2-B854-00C04FAD5171} - -// -// Define a WMI GUID to get toaster device info. -// - -DEFINE_GUID (TOASTER_WMI_STD_DATA_GUID, - 0xBBA21300L, 0x6DD3, 0x11d2, 0xB8, 0x44, 0x00, 0xC0, 0x4F, 0xAD, 0x51, 0x71); - -// -// Define a WMI GUID to represent device arrival notification WMIEvent class. -// - -DEFINE_GUID (TOASTER_NOTIFY_DEVICE_ARRIVAL_EVENT, - 0x1cdaff1, 0xc901, 0x45b4, 0xb3, 0x59, 0xb5, 0x54, 0x27, 0x25, 0xe2, 0x9c); -// {01CDAFF1-C901-45b4-B359-B5542725E29C} - - -// -// GUID definition are required to be outside of header inclusion pragma to avoid -// error during precompiled headers. -// - -#ifndef __PUBLIC_H -#define __PUBLIC_H - -#define BUS_HARDWARE_IDS L"{B85B7C50-6A01-11d2-B841-00C04FAD5171}\\MsToaster\0" -#define BUS_HARDWARE_IDS_LENGTH sizeof (BUS_HARDWARE_IDS) - -#define BUSENUM_COMPATIBLE_IDS L"{B85B7C50-6A01-11d2-B841-00C04FAD5171}\\MsCompatibleToaster\0" -#define BUSENUM_COMPATIBLE_IDS_LENGTH sizeof(BUSENUM_COMPATIBLE_IDS) - - -#define FILE_DEVICE_BUSENUM FILE_DEVICE_BUS_EXTENDER - -#define BUSENUM_IOCTL(_index_) \ - CTL_CODE (FILE_DEVICE_BUSENUM, _index_, METHOD_BUFFERED, FILE_READ_DATA) - -#define IOCTL_BUSENUM_PLUGIN_HARDWARE BUSENUM_IOCTL (0x0) -#define IOCTL_BUSENUM_UNPLUG_HARDWARE BUSENUM_IOCTL (0x1) -#define IOCTL_BUSENUM_EJECT_HARDWARE BUSENUM_IOCTL (0x2) -#define IOCTL_TOASTER_DONT_DISPLAY_IN_UI_DEVICE BUSENUM_IOCTL (0x3) - -// -// Data structure used in PlugIn and UnPlug ioctls -// - -typedef struct _BUSENUM_PLUGIN_HARDWARE -{ - // - // sizeof (struct _BUSENUM_HARDWARE) - // - IN ULONG Size; - - // - // Unique serial number of the device to be enumerated. - // Enumeration will be failed if another device on the - // bus has the same serail number. - // - - IN ULONG SerialNo; - - // - // An array of (zero terminated wide character strings). The array itself - // also null terminated (ie, MULTI_SZ) - // - #pragma warning(disable:4200) // nonstandard extension used - - IN WCHAR HardwareIDs[]; - - #pragma warning(default:4200) - -} BUSENUM_PLUGIN_HARDWARE, *PBUSENUM_PLUGIN_HARDWARE; - -typedef struct _BUSENUM_UNPLUG_HARDWARE -{ - // - // sizeof (struct _REMOVE_HARDWARE) - // - - IN ULONG Size; - - // - // Serial number of the device to be plugged out - // - - ULONG SerialNo; - - ULONG Reserved[2]; - -} BUSENUM_UNPLUG_HARDWARE, *PBUSENUM_UNPLUG_HARDWARE; - -typedef struct _BUSENUM_EJECT_HARDWARE -{ - // - // sizeof (struct _EJECT_HARDWARE) - // - - IN ULONG Size; - - // - // Serial number of the device to be ejected - // - - ULONG SerialNo; - - ULONG Reserved[2]; - -} BUSENUM_EJECT_HARDWARE, *PBUSENUM_EJECT_HARDWARE; - -#endif - diff --git a/general/WinHEC 2017 Lab/Toaster Driver/toaster/toaster.c b/general/WinHEC 2017 Lab/Toaster Driver/toaster/toaster.c deleted file mode 100644 index 7b117240..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/toaster/toaster.c +++ /dev/null @@ -1,418 +0,0 @@ -/*++ - -Copyright (c) Microsoft Corporation. All rights reserved. - - THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY - KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR - PURPOSE. - -Module Name: - - Toaster.c - -Abstract: - - This is a simple form of function driver for toaster device. The driver - doesn't handle any PnP and Power events because the framework provides - default behavior for those events. This driver has enough support to - allow an user application (toast/notify.exe) to open the device - interface registered by the driver and send read, write or ioctl requests. - -Environment: - - Kernel mode - ---*/ - -#include "toaster.h" - -#ifdef ALLOC_PRAGMA -#pragma alloc_text (INIT, DriverEntry) -#pragma alloc_text (PAGE, ToasterEvtDeviceAdd) -#pragma alloc_text (PAGE, ToasterEvtIoRead) -#pragma alloc_text (PAGE, ToasterEvtIoWrite) -#pragma alloc_text (PAGE, ToasterEvtIoDeviceControl) -#endif - - -NTSTATUS -DriverEntry( - IN PDRIVER_OBJECT DriverObject, - IN PUNICODE_STRING RegistryPath - ) -/*++ - -Routine Description: - DriverEntry initializes the driver and is the first routine called by the - system after the driver is loaded. DriverEntry configures and creates a WDF driver - object. - . -Parameters Description: - - DriverObject - represents the instance of the function driver that is loaded - into memory. DriverObject is allocated by the system before the - driver is loaded, and it is released by the system after the system unloads - the function driver from memory. - - RegistryPath - represents the driver specific path in the Registry. - The function driver can use the path to store driver related data between - reboots. The path does not store hardware instance specific data. - -Return Value: - - STATUS_SUCCESS if successful, - STATUS_UNSUCCESSFUL otherwise. - ---*/ -{ - NTSTATUS status = STATUS_SUCCESS; - WDF_DRIVER_CONFIG config; - - KdPrint(("Toaster Function Driver Sample - Driver Framework Edition.\n")); - - // - // Initialize driver config to control the attributes that - // are global to the driver. Note that framework by default - // provides a driver unload routine. If DriverEntry creates any resources - // that require clean-up in driver unload, - // you can manually override the default by supplying a pointer to the EvtDriverUnload - // callback in the config structure. In general xxx_CONFIG_INIT macros are provided to - // initialize most commonly used members. - // - - WDF_DRIVER_CONFIG_INIT( - &config, - ToasterEvtDeviceAdd - ); - - - // - // Create a framework driver object to represent our driver. - // - status = WdfDriverCreate( - DriverObject, - RegistryPath, - WDF_NO_OBJECT_ATTRIBUTES, // Driver Attributes - &config, // Driver Config Info - WDF_NO_HANDLE - ); - - if (!NT_SUCCESS(status)) { - KdPrint( ("WdfDriverCreate failed with status 0x%x\n", status)); - } - - return status; -} - - -NTSTATUS -ToasterEvtDeviceAdd( - IN WDFDRIVER Driver, - IN PWDFDEVICE_INIT DeviceInit - ) -/*++ -Routine Description: - - ToasterEvtDeviceAdd is called by the framework in response to AddDevice - call from the PnP manager. We create and initialize a WDF device object to - represent a new instance of toaster device. - -Arguments: - - Driver - Handle to a framework driver object created in DriverEntry - - DeviceInit - Pointer to a framework-allocated WDFDEVICE_INIT structure. - -Return Value: - - NTSTATUS - ---*/ -{ - NTSTATUS status = STATUS_SUCCESS; - PFDO_DATA fdoData; - WDF_IO_QUEUE_CONFIG queueConfig; - WDF_OBJECT_ATTRIBUTES fdoAttributes; - WDFDEVICE hDevice; - WDFQUEUE queue; - - UNREFERENCED_PARAMETER(Driver); - - PAGED_CODE(); - - KdPrint(("ToasterEvtDeviceAdd called\n")); - - // - // Initialize attributes and a context area for the device object. - // - // - WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&fdoAttributes, FDO_DATA); - - // - // Create a framework device object.This call will in turn create - // a WDM device object, attach to the lower stack, and set the - // appropriate flags and attributes. - // - status = WdfDeviceCreate(&DeviceInit, &fdoAttributes, &hDevice); - if (!NT_SUCCESS(status)) { - KdPrint( ("WdfDeviceCreate failed with status code 0x%x\n", status)); - return status; - } - - // - // Get the device context by using the accessor function specified in - // the WDF_DECLARE_CONTEXT_TYPE_WITH_NAME macro for FDO_DATA. - // - fdoData = ToasterFdoGetData(hDevice); - - // - // Tell the Framework that this device will need an interface - // - status = WdfDeviceCreateDeviceInterface( - hDevice, - (LPGUID) &GUID_DEVINTERFACE_TOASTER, - NULL // ReferenceString - ); - - if (!NT_SUCCESS (status)) { - KdPrint( ("WdfDeviceCreateDeviceInterface failed 0x%x\n", status)); - return status; - } - - // - // Register I/O callbacks to tell the framework that you are interested - // in handling IRP_MJ_READ, IRP_MJ_WRITE, and IRP_MJ_DEVICE_CONTROL requests. - // If a specific callback function is not specified for one ofthese, - // the request will be dispatched to the EvtIoDefault handler, if any. - // If there is no EvtIoDefault handler, the request will be failed with - // STATUS_INVALID_DEVICE_REQUEST. - // WdfIoQueueDispatchParallel means that we are capable of handling - // all the I/O requests simultaneously and we are responsible for protecting - // data that could be accessed by these callbacks simultaneously. - // A default queue gets all the requests that are not - // configured for forwarding using WdfDeviceConfigureRequestDispatching. - // - WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE(&queueConfig, WdfIoQueueDispatchParallel); - - queueConfig.EvtIoRead = ToasterEvtIoRead; - queueConfig.EvtIoWrite = ToasterEvtIoWrite; - queueConfig.EvtIoDeviceControl = ToasterEvtIoDeviceControl; - - // - // By default, Static Driver Verifier (SDV) displays a warning if it - // doesn't find the EvtIoStop callback on a power-managed queue. - // The 'assume' below causes SDV to suppress this warning. If the driver - // has not explicitly set PowerManaged to WdfFalse, the framework creates - // power-managed queues when the device is not a filter driver. Normally - // the EvtIoStop is required for power-managed queues, but for this driver - // it is not needed b/c the driver doesn't hold on to the requests or - // forward them to other drivers. This driver completes the requests - // directly in the queue's handlers. If the EvtIoStop callback is not - // implemented, the framework waits for all driver-owned requests to be - // done before moving in the Dx/sleep states or before removing the - // device, which is the correct behavior for this type of driver. - // If the requests were taking an indeterminate amount of time to complete, - // or if the driver forwarded the requests to a lower driver/another stack, - // the queue should have an EvtIoStop/EvtIoResume. - // - __analysis_assume(queueConfig.EvtIoStop != 0); - status = WdfIoQueueCreate( - hDevice, - &queueConfig, - WDF_NO_OBJECT_ATTRIBUTES, - &queue - ); - __analysis_assume(queueConfig.EvtIoStop == 0); - - if (!NT_SUCCESS (status)) { - - KdPrint( ("WdfIoQueueCreate failed 0x%x\n", status)); - return status; - } - - return status; -} - -VOID -ToasterEvtIoRead ( - WDFQUEUE Queue, - WDFREQUEST Request, - size_t Length - ) -/*++ - -Routine Description: - - Performs read from the toaster device. This event is called when the - framework receives IRP_MJ_READ requests. - -Arguments: - - Queue - Handle to the framework queue object that is associated with the - I/O request. - Request - Handle to a framework request object. - - Lenght - Length of the data buffer associated with the request. - By default, the queue does not dispatch - zero length read & write requests to the driver and instead to - complete such requests with status success. So we will never get - a zero length request. - -Return Value: - - None. - ---*/ -{ - NTSTATUS status; - ULONG_PTR bytesCopied =0; - WDFMEMORY memory; - - UNREFERENCED_PARAMETER(Queue); - UNREFERENCED_PARAMETER(Length); - - PAGED_CODE(); - - KdPrint(( "ToasterEvtIoRead: Request: 0x%p, Queue: 0x%p\n", - Request, Queue)); - - // - // Get the request memory and perform read operation here - // - status = WdfRequestRetrieveOutputMemory(Request, &memory); - if(NT_SUCCESS(status) ) { - // - // Copy data into the memory buffer using WdfMemoryCopyFromBuffer - // - } - - WdfRequestCompleteWithInformation(Request, status, bytesCopied); -} - -VOID -ToasterEvtIoWrite ( - WDFQUEUE Queue, - WDFREQUEST Request, - size_t Length - ) -/*++ - -Routine Description: - - Performs write to the toaster device. This event is called when the - framework receives IRP_MJ_WRITE requests. - -Arguments: - - Queue - Handle to the framework queue object that is associated with the - I/O request. - Request - Handle to a framework request object. - - Lenght - Length of the data buffer associated with the request. - The default property of the queue is to not dispatch - zero lenght read & write requests to the driver and - complete is with status success. So we will never get - a zero length request. - -Return Value: - - None ---*/ - -{ - NTSTATUS status; - ULONG_PTR bytesWritten =0; - WDFMEMORY memory; - - UNREFERENCED_PARAMETER(Queue); - UNREFERENCED_PARAMETER(Length); - - KdPrint(("ToasterEvtIoWrite. Request: 0x%p, Queue: 0x%p\n", - Request, Queue)); - - PAGED_CODE(); - - // - // Get the request buffer and perform write operation here - // - status = WdfRequestRetrieveInputMemory(Request, &memory); - if(NT_SUCCESS(status) ) { - // - // 1) Use WdfMemoryCopyToBuffer to copy data from the request - // to driver buffer. - // 2) Or get the buffer pointer from the request by calling - // WdfRequestRetrieveInputBuffer - // 3) Or you can get the buffer pointer from the memory handle - // by calling WdfMemoryGetBuffer. - // - bytesWritten = Length; - } - - WdfRequestCompleteWithInformation(Request, status, bytesWritten); - -} - - -VOID -ToasterEvtIoDeviceControl( - IN WDFQUEUE Queue, - IN WDFREQUEST Request, - IN size_t OutputBufferLength, - IN size_t InputBufferLength, - IN ULONG IoControlCode - ) -/*++ -Routine Description: - - This event is called when the framework receives IRP_MJ_DEVICE_CONTROL - requests from the system. - -Arguments: - - Queue - Handle to the framework queue object that is associated - with the I/O request. - Request - Handle to a framework request object. - - OutputBufferLength - length of the request's output buffer, - if an output buffer is available. - InputBufferLength - length of the request's input buffer, - if an input buffer is available. - - IoControlCode - the driver-defined or system-defined I/O control code - (IOCTL) that is associated with the request. - -Return Value: - - VOID - ---*/ -{ - NTSTATUS status= STATUS_SUCCESS; - - UNREFERENCED_PARAMETER(Queue); - UNREFERENCED_PARAMETER(OutputBufferLength); - UNREFERENCED_PARAMETER(InputBufferLength); - - KdPrint(("ToasterEvtIoDeviceControl called\n")); - - PAGED_CODE(); - - // - // Use WdfRequestRetrieveInputBuffer and WdfRequestRetrieveOutputBuffer - // to get the request buffers. - // - - switch (IoControlCode) { - - default: - status = STATUS_INVALID_DEVICE_REQUEST; - } - - // - // Complete the Request. - // - WdfRequestCompleteWithInformation(Request, status, (ULONG_PTR) 0); -} - - diff --git a/general/WinHEC 2017 Lab/Toaster Driver/toaster/toaster.h b/general/WinHEC 2017 Lab/Toaster Driver/toaster/toaster.h deleted file mode 100644 index fc847d2d..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/toaster/toaster.h +++ /dev/null @@ -1,134 +0,0 @@ -/*++ - -Copyright (c) 1990-2000 Microsoft Corporation All Rights Reserved - -Module Name: - - Toaster.h - -Abstract: - - Header file for the toaster driver modules. - -Environment: - - Kernel mode - ---*/ - - -#if !defined(_TOASTER_H_) -#define _TOASTER_H_ - -#include <ntddk.h> -#include <wdf.h> - -#define NTSTRSAFE_LIB -#include <ntstrsafe.h> - -#include "wmilib.h" -#include <initguid.h> -#include "driver.h" -#include "public.h" - -// For Featured driver only -#ifdef TOASTER_FUNC_FEATURED -#include <wpprecorder.h> -#endif // TOASTER_FUNC_FEATURED - -#define TOASTER_POOL_TAG (ULONG) 'saoT' - -#define MOFRESOURCENAME L"ToasterWMI" - -#define TOASTER_FUNC_DEVICE_LOG_ID "ToasterDevice" -// -// The device extension for the device object -// -typedef struct _FDO_DATA -{ - - WDFWMIINSTANCE WmiDeviceArrivalEvent; - - BOOLEAN WmiPowerDeviceEnableRegistered; - - TOASTER_INTERFACE_STANDARD BusInterface; - -// For Featured driver only -#ifdef TOASTER_FUNC_FEATURED - RECORDER_LOG WppRecorderLog; -#endif // TOASTER_FUNC_FEATURED - -} FDO_DATA, *PFDO_DATA; - -WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(FDO_DATA, ToasterFdoGetData) - - -// -// Connector Types -// - -#define TOASTER_WMI_STD_I8042 0 -#define TOASTER_WMI_STD_SERIAL 1 -#define TOASTER_WMI_STD_PARALEL 2 -#define TOASTER_WMI_STD_USB 3 - -DRIVER_INITIALIZE DriverEntry; -EVT_WDF_DRIVER_UNLOAD ToasterEvtDriverUnload; - -EVT_WDF_DRIVER_DEVICE_ADD ToasterEvtDeviceAdd; - -EVT_WDF_DEVICE_CONTEXT_CLEANUP ToasterEvtDeviceContextCleanup; -EVT_WDF_DEVICE_D0_ENTRY ToasterEvtDeviceD0Entry; -EVT_WDF_DEVICE_D0_EXIT ToasterEvtDeviceD0Exit; -EVT_WDF_DEVICE_PREPARE_HARDWARE ToasterEvtDevicePrepareHardware; -EVT_WDF_DEVICE_RELEASE_HARDWARE ToasterEvtDeviceReleaseHardware; - -EVT_WDF_DEVICE_SELF_MANAGED_IO_INIT ToasterEvtDeviceSelfManagedIoInit; - -// -// Io events callbacks. -// -EVT_WDF_IO_QUEUE_IO_READ ToasterEvtIoRead; -EVT_WDF_IO_QUEUE_IO_WRITE ToasterEvtIoWrite; -EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL ToasterEvtIoDeviceControl; -EVT_WDF_DEVICE_FILE_CREATE ToasterEvtDeviceFileCreate; -EVT_WDF_FILE_CLOSE ToasterEvtFileClose; - -NTSTATUS -ToasterWmiRegistration( - _In_ WDFDEVICE Device - ); - -// -// Power events callbacks -// -EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 ToasterEvtDeviceArmWakeFromS0; -EVT_WDF_DEVICE_ARM_WAKE_FROM_SX ToasterEvtDeviceArmWakeFromSx; -EVT_WDF_DEVICE_DISARM_WAKE_FROM_S0 ToasterEvtDeviceDisarmWakeFromS0; -EVT_WDF_DEVICE_DISARM_WAKE_FROM_SX ToasterEvtDeviceDisarmWakeFromSx; -EVT_WDF_DEVICE_WAKE_FROM_S0_TRIGGERED ToasterEvtDeviceWakeFromS0Triggered; -EVT_WDF_DEVICE_WAKE_FROM_SX_TRIGGERED ToasterEvtDeviceWakeFromSxTriggered; - -PCHAR -DbgDevicePowerString( - IN WDF_POWER_DEVICE_STATE Type - ); - -// -// WMI event callbacks -// -EVT_WDF_WMI_INSTANCE_QUERY_INSTANCE EvtWmiInstanceStdDeviceDataQueryInstance; -EVT_WDF_WMI_INSTANCE_QUERY_INSTANCE EvtWmiInstanceToasterControlQueryInstance; -EVT_WDF_WMI_INSTANCE_SET_INSTANCE EvtWmiInstanceStdDeviceDataSetInstance; -EVT_WDF_WMI_INSTANCE_SET_INSTANCE EvtWmiInstanceToasterControlSetInstance; -EVT_WDF_WMI_INSTANCE_SET_ITEM EvtWmiInstanceToasterControlSetItem; -EVT_WDF_WMI_INSTANCE_SET_ITEM EvtWmiInstanceStdDeviceDataSetItem; -EVT_WDF_WMI_INSTANCE_EXECUTE_METHOD EvtWmiInstanceToasterControlExecuteMethod; - -NTSTATUS -ToasterFireArrivalEvent( - _In_ WDFDEVICE Device - ); - -#endif // _TOASTER_H_ - diff --git a/general/WinHEC 2017 Lab/Toaster Driver/toaster/toaster.inx b/general/WinHEC 2017 Lab/Toaster Driver/toaster/toaster.inx Binary files differdeleted file mode 100644 index 2fff1924..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/toaster/toaster.inx +++ /dev/null diff --git a/general/WinHEC 2017 Lab/Toaster Driver/toaster/toaster.vcxproj b/general/WinHEC 2017 Lab/Toaster Driver/toaster/toaster.vcxproj deleted file mode 100644 index cfdfd574..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/toaster/toaster.vcxproj +++ /dev/null @@ -1,229 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|ARM"> - <Configuration>Debug</Configuration> - <Platform>ARM</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|ARM"> - <Configuration>Release</Configuration> - <Platform>ARM</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|ARM64"> - <Configuration>Debug</Configuration> - <Platform>ARM64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|ARM64"> - <Configuration>Release</Configuration> - <Platform>ARM64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{2D4FC000-01E2-4FDD-B01A-4FD3C59D245D}</ProjectGuid> - <TemplateGuid>{497e31cb-056b-4f31-abb8-447fd55ee5a5}</TemplateGuid> - <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> - <MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion> - <Configuration>Debug</Configuration> - <Platform Condition="'$(Platform)' == ''">Win32</Platform> - <RootNamespace>toaster</RootNamespace> - <WindowsTargetPlatformVersion>$(LatestTargetPlatformVersion)</WindowsTargetPlatformVersion> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <TargetVersion>Windows10</TargetVersion> - <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> - <ConfigurationType>Driver</ConfigurationType> - <DriverType>KMDF</DriverType> - <DriverTargetPlatform>Universal</DriverTargetPlatform> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <TargetVersion>Windows10</TargetVersion> - <UseDebugLibraries>false</UseDebugLibraries> - <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> - <ConfigurationType>Driver</ConfigurationType> - <DriverType>KMDF</DriverType> - <DriverTargetPlatform>Universal</DriverTargetPlatform> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> - <TargetVersion>Windows10</TargetVersion> - <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> - <ConfigurationType>Driver</ConfigurationType> - <DriverType>KMDF</DriverType> - <DriverTargetPlatform>Universal</DriverTargetPlatform> - <SupportsPackaging>true</SupportsPackaging> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> - <TargetVersion>Windows10</TargetVersion> - <UseDebugLibraries>false</UseDebugLibraries> - <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> - <ConfigurationType>Driver</ConfigurationType> - <DriverType>KMDF</DriverType> - <DriverTargetPlatform>Universal</DriverTargetPlatform> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration"> - <TargetVersion>Windows10</TargetVersion> - <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> - <ConfigurationType>Driver</ConfigurationType> - <DriverType>KMDF</DriverType> - <DriverTargetPlatform>Universal</DriverTargetPlatform> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration"> - <TargetVersion>Windows10</TargetVersion> - <UseDebugLibraries>false</UseDebugLibraries> - <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> - <ConfigurationType>Driver</ConfigurationType> - <DriverType>KMDF</DriverType> - <DriverTargetPlatform>Universal</DriverTargetPlatform> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration"> - <TargetVersion>Windows10</TargetVersion> - <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> - <ConfigurationType>Driver</ConfigurationType> - <DriverType>KMDF</DriverType> - <DriverTargetPlatform>Universal</DriverTargetPlatform> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration"> - <TargetVersion>Windows10</TargetVersion> - <UseDebugLibraries>false</UseDebugLibraries> - <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> - <ConfigurationType>Driver</ConfigurationType> - <DriverType>KMDF</DriverType> - <DriverTargetPlatform>Universal</DriverTargetPlatform> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> - <ApiValidator_Enable>true</ApiValidator_Enable> - <OutDir>$(SolutionDir)$(Platform)\$(ConfigurationName)\</OutDir> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> - <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> - <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'"> - <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> - <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <WppEnabled>true</WppEnabled> - <WppRecorderEnabled>true</WppRecorderEnabled> - <WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> - <WppKernelMode>true</WppKernelMode> - </ClCompile> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <WppEnabled>true</WppEnabled> - <WppRecorderEnabled>true</WppRecorderEnabled> - <WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> - <WppKernelMode>true</WppKernelMode> - </ClCompile> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <ClCompile> - <WppEnabled>true</WppEnabled> - <WppRecorderEnabled>true</WppRecorderEnabled> - <WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> - <WppKernelMode>true</WppKernelMode> - </ClCompile> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <ClCompile> - <WppEnabled>true</WppEnabled> - <WppRecorderEnabled>true</WppRecorderEnabled> - <WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> - <WppKernelMode>true</WppKernelMode> - </ClCompile> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> - <ClCompile> - <WppEnabled>true</WppEnabled> - <WppRecorderEnabled>true</WppRecorderEnabled> - <WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> - <WppKernelMode>true</WppKernelMode> - </ClCompile> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> - <ClCompile> - <WppEnabled>true</WppEnabled> - <WppRecorderEnabled>true</WppRecorderEnabled> - <WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> - <WppKernelMode>true</WppKernelMode> - </ClCompile> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> - <ClCompile> - <WppEnabled>true</WppEnabled> - <WppRecorderEnabled>true</WppRecorderEnabled> - <WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> - <WppKernelMode>true</WppKernelMode> - </ClCompile> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'"> - <ClCompile> - <WppEnabled>true</WppEnabled> - <WppRecorderEnabled>true</WppRecorderEnabled> - <WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> - <WppKernelMode>true</WppKernelMode> - </ClCompile> - </ItemDefinitionGroup> - <ItemGroup> - <FilesToPackage Include="$(TargetPath)" /> - </ItemGroup> - <ItemGroup> - <Inf Include="toaster.inx" /> - </ItemGroup> - <ItemGroup> - <ClInclude Include="driver.h" /> - <ClInclude Include="public.h" /> - <ClInclude Include="toaster.h" /> - <ClInclude Include="trace.h" /> - </ItemGroup> - <ItemGroup> - <ClCompile Include="toaster.c" /> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project>
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/Toaster Driver/toaster/toaster.vcxproj.filters b/general/WinHEC 2017 Lab/Toaster Driver/toaster/toaster.vcxproj.filters deleted file mode 100644 index 2edeb4fc..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/toaster/toaster.vcxproj.filters +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup> - <Filter Include="Source Files"> - <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> - <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> - </Filter> - <Filter Include="Header Files"> - <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> - <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> - </Filter> - <Filter Include="Resource Files"> - <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> - <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> - </Filter> - <Filter Include="Driver Files"> - <UniqueIdentifier>{8E41214B-6785-4CFE-B992-037D68949A14}</UniqueIdentifier> - <Extensions>inf;inv;inx;mof;mc;</Extensions> - </Filter> - </ItemGroup> - <ItemGroup> - <Inf Include="toaster.inx"> - <Filter>Driver Files</Filter> - </Inf> - </ItemGroup> - <ItemGroup> - <ClInclude Include="driver.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="public.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="toaster.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="trace.h"> - <Filter>Header Files</Filter> - </ClInclude> - </ItemGroup> - <ItemGroup> - <ClCompile Include="toaster.c"> - <Filter>Source Files</Filter> - </ClCompile> - </ItemGroup> -</Project>
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/Toaster Driver/toaster/trace.h b/general/WinHEC 2017 Lab/Toaster Driver/toaster/trace.h deleted file mode 100644 index 820df2ea..00000000 --- a/general/WinHEC 2017 Lab/Toaster Driver/toaster/trace.h +++ /dev/null @@ -1,62 +0,0 @@ -/*++ - -Module Name: - - Trace.h - -Abstract: - - Header file for the debug tracing related function defintions and macros. - -Environment: - - Kernel mode - ---*/ - -// -// Define the tracing flags. -// -// Tracing GUID - f1f5e659-1217-48bd-9c69-6d9cb3a147d5 -// - -#define WPP_CONTROL_GUIDS \ - WPP_DEFINE_CONTROL_GUID( \ - KMDFDriver1TraceGuid, (f1f5e659,1217,48bd,9c69,6d9cb3a147d5), \ - \ - WPP_DEFINE_BIT(MYDRIVER_ALL_INFO) \ - WPP_DEFINE_BIT(TRACE_DRIVER) \ - WPP_DEFINE_BIT(TRACE_DEVICE) \ - WPP_DEFINE_BIT(TRACE_QUEUE) \ - ) - -#define WPP_FLAG_LEVEL_LOGGER(flag, level) \ - WPP_LEVEL_LOGGER(flag) - -#define WPP_FLAG_LEVEL_ENABLED(flag, level) \ - (WPP_LEVEL_ENABLED(flag) && \ - WPP_CONTROL(WPP_BIT_ ## flag).Level >= level) - -#define WPP_LEVEL_FLAGS_LOGGER(lvl,flags) \ - WPP_LEVEL_LOGGER(flags) - -#define WPP_LEVEL_FLAGS_ENABLED(lvl, flags) \ - (WPP_LEVEL_ENABLED(flags) && WPP_CONTROL(WPP_BIT_ ## flags).Level >= lvl) - -// -// WPP orders static parameters before dynamic parameters. To support the Trace function -// defined below which sets FLAGS=MYDRIVER_ALL_INFO, a custom macro must be defined to -// reorder the arguments to what the .tpl configuration file expects. -// -#define WPP_RECORDER_FLAGS_LEVEL_ARGS(flags, lvl) WPP_RECORDER_LEVEL_FLAGS_ARGS(lvl, flags) -#define WPP_RECORDER_FLAGS_LEVEL_FILTER(flags, lvl) WPP_RECORDER_LEVEL_FLAGS_FILTER(lvl, flags) - -// -// This comment block is scanned by the trace preprocessor to define our -// Trace function. -// -// begin_wpp config -// FUNC Trace{FLAGS=MYDRIVER_ALL_INFO}(LEVEL, MSG, ...); -// FUNC TraceEvents(LEVEL, FLAGS, MSG, ...); -// end_wpp -// diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App.sln b/general/WinHEC 2017 Lab/Toaster Support App/App.sln deleted file mode 100644 index 8d28827e..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App.sln +++ /dev/null @@ -1,40 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26430.12 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CustomCapability", "App\CustomCapability\cpp\CustomCapability.vcxproj", "{0213712B-62E6-5546-8D25-79B90244FFA9}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|ARM = Debug|ARM - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|ARM = Release|ARM - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0213712B-62E6-5546-8D25-79B90244FFA9}.Debug|ARM.ActiveCfg = Debug|ARM - {0213712B-62E6-5546-8D25-79B90244FFA9}.Debug|ARM.Build.0 = Debug|ARM - {0213712B-62E6-5546-8D25-79B90244FFA9}.Debug|ARM.Deploy.0 = Debug|ARM - {0213712B-62E6-5546-8D25-79B90244FFA9}.Debug|x64.ActiveCfg = Debug|x64 - {0213712B-62E6-5546-8D25-79B90244FFA9}.Debug|x64.Build.0 = Debug|x64 - {0213712B-62E6-5546-8D25-79B90244FFA9}.Debug|x64.Deploy.0 = Debug|x64 - {0213712B-62E6-5546-8D25-79B90244FFA9}.Debug|x86.ActiveCfg = Debug|Win32 - {0213712B-62E6-5546-8D25-79B90244FFA9}.Debug|x86.Build.0 = Debug|Win32 - {0213712B-62E6-5546-8D25-79B90244FFA9}.Debug|x86.Deploy.0 = Debug|Win32 - {0213712B-62E6-5546-8D25-79B90244FFA9}.Release|ARM.ActiveCfg = Release|ARM - {0213712B-62E6-5546-8D25-79B90244FFA9}.Release|ARM.Build.0 = Release|ARM - {0213712B-62E6-5546-8D25-79B90244FFA9}.Release|ARM.Deploy.0 = Release|ARM - {0213712B-62E6-5546-8D25-79B90244FFA9}.Release|x64.ActiveCfg = Release|x64 - {0213712B-62E6-5546-8D25-79B90244FFA9}.Release|x64.Build.0 = Release|x64 - {0213712B-62E6-5546-8D25-79B90244FFA9}.Release|x64.Deploy.0 = Release|x64 - {0213712B-62E6-5546-8D25-79B90244FFA9}.Release|x86.ActiveCfg = Release|Win32 - {0213712B-62E6-5546-8D25-79B90244FFA9}.Release|x86.Build.0 = Release|Win32 - {0213712B-62E6-5546-8D25-79B90244FFA9}.Release|x86.Deploy.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/CustomCapability.SCCD b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/CustomCapability.SCCD deleted file mode 100644 index cad58db2..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/CustomCapability.SCCD +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<CustomCapabilityDescriptor xmlns="http://schemas.microsoft.com/appx/2016/sccd" xmlns:s="http://schemas.microsoft.com/appx/2016/sccd"> - <CustomCapabilities> - <CustomCapability Name="microsoft.hsaTestCustomCapability_q536wpkpf5cy2"></CustomCapability> - </CustomCapabilities> - <AuthorizedEntities> - <AuthorizedEntity AppPackageFamilyName="Microsoft.SDKSamples.CustomCapability.CPP_8wekyb3d8bbwe" CertificateSignatureHash="ca9fc964db7e0c2938778f4559946833e7a8cfde0f3eaa07650766d4764e86c4"></AuthorizedEntity> - <AuthorizedEntity AppPackageFamilyName="Microsoft.SDKSamples.CustomCapability.CPP_8wekyb3d8bbwe" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"></AuthorizedEntity> - </AuthorizedEntities> - <Catalog>xxxx</Catalog> -</CustomCapabilityDescriptor> diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/CustomCapability.vcxproj b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/CustomCapability.vcxproj deleted file mode 100644 index 8efaa78d..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/CustomCapability.vcxproj +++ /dev/null @@ -1,287 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup Label="Globals"> - <ProjectGuid>{0213712b-62e6-5546-8d25-79b90244ffa9}</ProjectGuid> - <RootNamespace>SDKTemplate</RootNamespace> - <DefaultLanguage>en-US</DefaultLanguage> - <MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion> - <AppContainerApplication>true</AppContainerApplication> - <ApplicationType>Windows Store</ApplicationType> - <WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion> - <WindowsTargetPlatformMinVersion>10.0.15063.0</WindowsTargetPlatformMinVersion> - <ApplicationTypeRevision>10.0</ApplicationTypeRevision> - <ProjectName>CustomCapability</ProjectName> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|ARM"> - <Configuration>Debug</Configuration> - <Platform>ARM</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|ARM"> - <Configuration>Release</Configuration> - <Platform>ARM</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>v141</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>v141</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>v141</PlatformToolset> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <UseDebugLibraries>false</UseDebugLibraries> - <WholeProgramOptimization>true</WholeProgramOptimization> - <PlatformToolset>v141</PlatformToolset> - <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <UseDebugLibraries>false</UseDebugLibraries> - <WholeProgramOptimization>true</WholeProgramOptimization> - <PlatformToolset>v141</PlatformToolset> - <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <UseDebugLibraries>false</UseDebugLibraries> - <WholeProgramOptimization>true</WholeProgramOptimization> - <PlatformToolset>v141</PlatformToolset> - <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - <Import Project="$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformExtensionSDKLocation(`WindowsDesktop, Version=10.0.15063.0`, $(TargetPlatformIdentifier), $(TargetPlatformVersion), $(SDKReferenceDirectoryRoot), $(SDKExtensionDirectoryRoot), $(SDKReferenceRegistryRoot)))\DesignTime\CommonConfiguration\Neutral\WindowsDesktop.props" Condition="exists('$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformExtensionSDKLocation(`WindowsDesktop, Version=10.0.15063.0`, $(TargetPlatformIdentifier), $(TargetPlatformVersion), $(SDKReferenceDirectoryRoot), $(SDKExtensionDirectoryRoot), $(SDKReferenceRegistryRoot)))\DesignTime\CommonConfiguration\Neutral\WindowsDesktop.props')" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - <Import Project="$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformExtensionSDKLocation(`WindowsDesktop, Version=10.0.15063.0`, $(TargetPlatformIdentifier), $(TargetPlatformVersion), $(SDKReferenceDirectoryRoot), $(SDKExtensionDirectoryRoot), $(SDKReferenceRegistryRoot)))\DesignTime\CommonConfiguration\Neutral\WindowsDesktop.props" Condition="exists('$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformExtensionSDKLocation(`WindowsDesktop, Version=10.0.15063.0`, $(TargetPlatformIdentifier), $(TargetPlatformVersion), $(SDKReferenceDirectoryRoot), $(SDKExtensionDirectoryRoot), $(SDKReferenceRegistryRoot)))\DesignTime\CommonConfiguration\Neutral\WindowsDesktop.props')" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - <Import Project="$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformExtensionSDKLocation(`WindowsDesktop, Version=10.0.15063.0`, $(TargetPlatformIdentifier), $(TargetPlatformVersion), $(SDKReferenceDirectoryRoot), $(SDKExtensionDirectoryRoot), $(SDKReferenceRegistryRoot)))\DesignTime\CommonConfiguration\Neutral\WindowsDesktop.props" Condition="exists('$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformExtensionSDKLocation(`WindowsDesktop, Version=10.0.15063.0`, $(TargetPlatformIdentifier), $(TargetPlatformVersion), $(SDKReferenceDirectoryRoot), $(SDKExtensionDirectoryRoot), $(SDKReferenceRegistryRoot)))\DesignTime\CommonConfiguration\Neutral\WindowsDesktop.props')" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - <Import Project="$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformExtensionSDKLocation(`WindowsDesktop, Version=10.0.15063.0`, $(TargetPlatformIdentifier), $(TargetPlatformVersion), $(SDKReferenceDirectoryRoot), $(SDKExtensionDirectoryRoot), $(SDKReferenceRegistryRoot)))\DesignTime\CommonConfiguration\Neutral\WindowsDesktop.props" Condition="exists('$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformExtensionSDKLocation(`WindowsDesktop, Version=10.0.15063.0`, $(TargetPlatformIdentifier), $(TargetPlatformVersion), $(SDKReferenceDirectoryRoot), $(SDKExtensionDirectoryRoot), $(SDKReferenceRegistryRoot)))\DesignTime\CommonConfiguration\Neutral\WindowsDesktop.props')" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - <Import Project="$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformExtensionSDKLocation(`WindowsDesktop, Version=10.0.15063.0`, $(TargetPlatformIdentifier), $(TargetPlatformVersion), $(SDKReferenceDirectoryRoot), $(SDKExtensionDirectoryRoot), $(SDKReferenceRegistryRoot)))\DesignTime\CommonConfiguration\Neutral\WindowsDesktop.props" Condition="exists('$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformExtensionSDKLocation(`WindowsDesktop, Version=10.0.15063.0`, $(TargetPlatformIdentifier), $(TargetPlatformVersion), $(SDKReferenceDirectoryRoot), $(SDKExtensionDirectoryRoot), $(SDKReferenceRegistryRoot)))\DesignTime\CommonConfiguration\Neutral\WindowsDesktop.props')" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - <Import Project="$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformExtensionSDKLocation(`WindowsDesktop, Version=10.0.15063.0`, $(TargetPlatformIdentifier), $(TargetPlatformVersion), $(SDKReferenceDirectoryRoot), $(SDKExtensionDirectoryRoot), $(SDKReferenceRegistryRoot)))\DesignTime\CommonConfiguration\Neutral\WindowsDesktop.props" Condition="exists('$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformExtensionSDKLocation(`WindowsDesktop, Version=10.0.15063.0`, $(TargetPlatformIdentifier), $(TargetPlatformVersion), $(SDKReferenceDirectoryRoot), $(SDKExtensionDirectoryRoot), $(SDKReferenceRegistryRoot)))\DesignTime\CommonConfiguration\Neutral\WindowsDesktop.props')" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <IncludePath>$(IncludePath);..\..\..\SharedContent\cpp</IncludePath> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\$(MSBuildProjectName)\</OutDir> - <IntDir>$(Platform)\$(Configuration)\</IntDir> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> - <DisableSpecificWarnings>4453;28204</DisableSpecificWarnings> - <AdditionalIncludeDirectories>$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories);$(OutDir)..</AdditionalIncludeDirectories> - <ShowIncludes>false</ShowIncludes> - </ClCompile> - <Link> - <AdditionalDependencies>vccorlib.lib;WindowsApp.lib;%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies> - <OptimizeReferences>false</OptimizeReferences> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> - <ClCompile> - <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> - <DisableSpecificWarnings>4453;28204</DisableSpecificWarnings> - <AdditionalIncludeDirectories>$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories);$(OutDir)..</AdditionalIncludeDirectories> - <ShowIncludes>false</ShowIncludes> - </ClCompile> - <Link> - <AdditionalDependencies>vccorlib.lib;WindowsApp.lib;%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies> - <OptimizeReferences>false</OptimizeReferences> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> - <DisableSpecificWarnings>4453;28204</DisableSpecificWarnings> - <AdditionalIncludeDirectories>$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories);$(OutDir)..</AdditionalIncludeDirectories> - <ShowIncludes>false</ShowIncludes> - </ClCompile> - <Link> - <AdditionalDependencies>vccorlib.lib;WindowsApp.lib;%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies> - <OptimizeReferences>true</OptimizeReferences> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> - <ClCompile> - <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> - <DisableSpecificWarnings>4453;28204</DisableSpecificWarnings> - <AdditionalIncludeDirectories>$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories);$(OutDir)..</AdditionalIncludeDirectories> - <ShowIncludes>false</ShowIncludes> - </ClCompile> - <Link> - <AdditionalDependencies>vccorlib.lib;WindowsApp.lib;%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies> - <OptimizeReferences>true</OptimizeReferences> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <ClCompile> - <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> - <DisableSpecificWarnings>4453;28204</DisableSpecificWarnings> - <AdditionalIncludeDirectories>$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories);$(OutDir)..</AdditionalIncludeDirectories> - <ShowIncludes>false</ShowIncludes> - </ClCompile> - <Link> - <AdditionalDependencies>vccorlib.lib;WindowsApp.lib;%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies> - <OptimizeReferences>false</OptimizeReferences> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <ClCompile> - <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions> - <DisableSpecificWarnings>4453;28204</DisableSpecificWarnings> - <AdditionalIncludeDirectories>$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories);$(OutDir)..</AdditionalIncludeDirectories> - <ShowIncludes>false</ShowIncludes> - </ClCompile> - <Link> - <AdditionalDependencies>vccorlib.lib;WindowsApp.lib;%(AdditionalDependencies);rpcrt4.lib</AdditionalDependencies> - <OptimizeReferences>true</OptimizeReferences> - </Link> - </ItemDefinitionGroup> - <ItemGroup> - <ClInclude Include="ServiceViewModel.h" /> - <ClInclude Include="pch.h" /> - <ClInclude Include="..\..\..\SharedContent\cpp\App.xaml.h"> - <DependentUpon>..\..\..\SharedContent\xaml\App.xaml</DependentUpon> - </ClInclude> - <ClInclude Include="..\..\..\SharedContent\cpp\MainPage.xaml.h"> - <DependentUpon>..\..\..\SharedContent\cpp\MainPage.xaml</DependentUpon> - </ClInclude> - <ClInclude Include="Scenario1_MeteringData.xaml.h"> - <DependentUpon>Scenario1_MeteringData.xaml</DependentUpon> - </ClInclude> - <ClInclude Include="RpcClient.h" /> - <ClInclude Include="SampleConfiguration.h" /> - </ItemGroup> - <ItemGroup> - <ApplicationDefinition Include="..\..\..\SharedContent\xaml\App.xaml"> - <SubType>Designer</SubType> - </ApplicationDefinition> - <Page Include="..\..\..\SharedContent\xaml\Styles.xaml"> - <Link>Styles\Styles.xaml</Link> - </Page> - <Page Include="..\..\..\SharedContent\cpp\MainPage.xaml"> - <SubType>Designer</SubType> - </Page> - <Page Include="Scenario1_MeteringData.xaml"> - <SubType>Designer</SubType> - </Page> - </ItemGroup> - <ItemGroup> - <AppxManifest Include="Package.appxmanifest"> - <SubType>Designer</SubType> - </AppxManifest> - </ItemGroup> - <ItemGroup> - <Image Include="..\..\..\SharedContent\media\microsoft-sdk.png"> - <Link>Assets\microsoft-sdk.png</Link> - </Image> - <Image Include="..\..\..\SharedContent\media\smalltile-sdk.png"> - <Link>Assets\smalltile-sdk.png</Link> - </Image> - <Image Include="..\..\..\SharedContent\media\splash-sdk.png"> - <Link>Assets\splash-sdk.png</Link> - </Image> - <Image Include="..\..\..\SharedContent\media\squaretile-sdk.png"> - <Link>Assets\squaretile-sdk.png</Link> - </Image> - <Image Include="..\..\..\SharedContent\media\storelogo-sdk.png"> - <Link>Assets\storelogo-sdk.png</Link> - </Image> - <Image Include="..\..\..\SharedContent\media\tile-sdk.png"> - <Link>Assets\tile-sdk.png</Link> - </Image> - <Image Include="..\..\..\SharedContent\media\windows-sdk.png"> - <Link>Assets\windows-sdk.png</Link> - </Image> - </ItemGroup> - <ItemGroup> - <ClCompile Include="RpcInterface.c"> - <CompileAsWinRT>false</CompileAsWinRT> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="..\..\..\SharedContent\cpp\App.xaml.cpp"> - <DependentUpon>..\..\..\SharedContent\xaml\App.xaml</DependentUpon> - </ClCompile> - <ClCompile Include="..\..\..\SharedContent\cpp\MainPage.xaml.cpp"> - <DependentUpon>..\..\..\SharedContent\cpp\MainPage.xaml</DependentUpon> - </ClCompile> - <ClCompile Include="ServiceViewModel.cpp" /> - <ClCompile Include="Scenario1_MeteringData.xaml.cpp"> - <DependentUpon>Scenario1_MeteringData.xaml</DependentUpon> - </ClCompile> - <ClCompile Include="SampleConfiguration.cpp" /> - <ClCompile Include="pch.cpp"> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader> - </ClCompile> - <ClCompile Include="RpcClient.cpp"> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NotUsing</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NotUsing</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader> - <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader> - </ClCompile> - </ItemGroup> - <ItemGroup> - <SDKReference Include="WindowsDesktop, Version=10.0.15063.0" /> - </ItemGroup> - <ItemGroup> - <None Include="..\..\..\..\Toaster Driver\Service\RpcInterface.acf" /> - </ItemGroup> - <ItemGroup> - <Midl Include="..\..\..\..\Toaster Driver\Service\RpcInterface.Idl" /> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project>
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/CustomCapability.vcxproj.filters b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/CustomCapability.vcxproj.filters deleted file mode 100644 index af84bc38..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/CustomCapability.vcxproj.filters +++ /dev/null @@ -1,89 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup> - <Filter Include="Common"> - <UniqueIdentifier>81d95eea-286c-4a5e-98f1-eef612020bf0</UniqueIdentifier> - </Filter> - <Filter Include="Assets"> - <UniqueIdentifier>85b464d3-9e56-4242-b58b-1f226dd034b4</UniqueIdentifier> - <Extensions>bmp;fbx;gif;jpg;jpeg;tga;tiff;tif;png</Extensions> - </Filter> - <Filter Include="ViewModel"> - <UniqueIdentifier>{1c0f2943-52c2-4a54-93a2-971c14e7c8ec}</UniqueIdentifier> - </Filter> - <Filter Include="Model"> - <UniqueIdentifier>{33085be2-4c37-4eab-8f6e-6add0cffe2d4}</UniqueIdentifier> - </Filter> - </ItemGroup> - <ItemGroup> - <ApplicationDefinition Include="..\..\..\SharedContent\xaml\App.xaml" /> - </ItemGroup> - <ItemGroup> - <ClCompile Include="pch.cpp" /> - <ClCompile Include="RpcClient.cpp"> - <Filter>Model</Filter> - </ClCompile> - <ClCompile Include="SampleConfiguration.cpp"> - <Filter>Common</Filter> - </ClCompile> - <ClCompile Include="Scenario1_MeteringData.xaml.cpp" /> - <ClCompile Include="..\..\..\SharedContent\cpp\App.xaml.cpp" /> - <ClCompile Include="..\..\..\SharedContent\cpp\MainPage.xaml.cpp" /> - <ClCompile Include="ServiceViewModel.cpp"> - <Filter>ViewModel</Filter> - </ClCompile> - <ClCompile Include="RpcInterface.c" /> - </ItemGroup> - <ItemGroup> - <ClInclude Include="pch.h" /> - <ClInclude Include="RpcClient.h"> - <Filter>Model</Filter> - </ClInclude> - <ClInclude Include="SampleConfiguration.h"> - <Filter>Common</Filter> - </ClInclude> - <ClInclude Include="Scenario1_MeteringData.xaml.h" /> - <ClInclude Include="..\..\..\SharedContent\cpp\App.xaml.h" /> - <ClInclude Include="..\..\..\SharedContent\cpp\MainPage.xaml.h" /> - <ClInclude Include="ServiceViewModel.h"> - <Filter>ViewModel</Filter> - </ClInclude> - </ItemGroup> - <ItemGroup> - <Image Include="..\..\..\SharedContent\media\microsoft-sdk.png"> - <Filter>Assets</Filter> - </Image> - <Image Include="..\..\..\SharedContent\media\smalltile-sdk.png"> - <Filter>Assets</Filter> - </Image> - <Image Include="..\..\..\SharedContent\media\splash-sdk.png"> - <Filter>Assets</Filter> - </Image> - <Image Include="..\..\..\SharedContent\media\squaretile-sdk.png"> - <Filter>Assets</Filter> - </Image> - <Image Include="..\..\..\SharedContent\media\storelogo-sdk.png"> - <Filter>Assets</Filter> - </Image> - <Image Include="..\..\..\SharedContent\media\tile-sdk.png"> - <Filter>Assets</Filter> - </Image> - <Image Include="..\..\..\SharedContent\media\windows-sdk.png"> - <Filter>Assets</Filter> - </Image> - </ItemGroup> - <ItemGroup> - <AppxManifest Include="Package.appxmanifest" /> - </ItemGroup> - <ItemGroup> - <Page Include="Scenario1_MeteringData.xaml" /> - <Page Include="..\..\..\SharedContent\xaml\Styles.xaml" /> - <Page Include="..\..\..\SharedContent\cpp\MainPage.xaml" /> - </ItemGroup> - <ItemGroup> - <None Include="..\..\..\..\Toaster Driver\Service\RpcInterface.acf" /> - </ItemGroup> - <ItemGroup> - <Midl Include="..\..\..\..\Toaster Driver\Service\RpcInterface.Idl" /> - </ItemGroup> -</Project>
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/DeviceList.cpp b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/DeviceList.cpp deleted file mode 100644 index cb3a7a8e..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/DeviceList.cpp +++ /dev/null @@ -1,244 +0,0 @@ -#include "pch.h" -#include "DeviceList.h" -#include "MainPage.xaml.h" -#include "App.xaml.h" - -using namespace SDKTemplate; - -using namespace Platform; -using namespace Platform::Collections; -using namespace Windows::ApplicationModel; -using namespace Windows::Devices::Enumeration; -using namespace Windows::Devices::Custom; -using namespace Windows::Foundation; -using namespace Windows::UI::Core; -using namespace Windows::UI::Xaml; -using namespace Windows::UI::Xaml::Documents; - -DeviceList^ DeviceList::_Current = nullptr; - -DeviceList^ DeviceList::Current::get() -{ - if (DeviceList::_Current == nullptr) - { - DeviceList::_Current = ref new DeviceList(); - } - return DeviceList::_Current; -} - -DeviceList::DeviceList() : m_WatcherStarted(false), m_WatcherSuspended(false) -{ - m_Fx2Watcher = nullptr; - m_List = ref new Vector<DeviceListEntry^>(); - InitDeviceWatcher(); - - // Register for app suspend/resume handlers - App::Current->Suspending += ref new SuspendingEventHandler(this, &DeviceList::SuspendDeviceWatcher); - App::Current->Resuming += ref new EventHandler<Object^>(this, &DeviceList::ResumeDeviceWatcher); -} - -void DeviceList::InitDeviceWatcher() -{ - // Define the selector to enumerate all of the fx2 device interface class instances. - // Use the DeviceInterfaceGuid provided by the driver (Fx2Driver, in this case). - auto selector = CustomDevice::GetDeviceSelector(Fx2Driver::DeviceInterfaceGuid); - - // Set of properties to retrieve - auto properties = ref new Vector<String^>({ "System.Devices.DeviceInstanceId" }); - - // Create a device watcher to look for instances of the fx2 device interface. - m_Fx2Watcher = DeviceInformation::CreateWatcher(selector, properties); - - m_Fx2Watcher->Added += ref new TypedEventHandler<DeviceWatcher^, DeviceInformation^>(this, &DeviceList::OnFx2Added); - m_Fx2Watcher->Removed += ref new TypedEventHandler<DeviceWatcher^, DeviceInformationUpdate^>(this, &DeviceList::OnFx2Removed); - m_Fx2Watcher->EnumerationCompleted += ref new TypedEventHandler<DeviceWatcher^, Object^>(this, &DeviceList::OnFx2EnumerationComplete); -} - -void DeviceList::StartFx2Watcher() -{ - MainPage::Current->NotifyUser("starting device watcher", NotifyType::StatusMessage); - - std::for_each( - begin(m_List), - end(m_List), - [](DeviceListEntry^ Entry) { - Entry->Matched = false; - }); - - WatcherStarted = true; - m_Fx2Watcher->Start(); -} - -void DeviceList::StopFx2Watcher() -{ - MainPage::Current->NotifyUser("stopping fx2 watcher", NotifyType::StatusMessage); - m_Fx2Watcher->Stop(); - WatcherStarted = false; -} - -void DeviceList::CreateBooleanTable( - InlineCollection^ Table, - const Platform::Array<bool>^ NewValues, - const Platform::Array<bool>^ OldValues, - String^ /* IndexTitle */, - String^ /* ValueTitle */, - String^ TrueValue, - String^ FalseValue) -{ - Table->Clear(); - - for (int i = 0; i < (int)NewValues->Length; i += 1) - { - auto line = ref new Span(); - auto block = ref new Run(); - block->Text = (i + 1).ToString(); - line->Inlines->Append(block); - - block = ref new Run(); - block->Text = " "; - line->Inlines->Append(block); - - block = ref new Run(); - block->Text = NewValues[i] ? TrueValue : FalseValue; - - if ((OldValues != nullptr) && (OldValues[i] != NewValues[i])) - { - auto bold = ref new Bold(); - bold->Inlines->Append(block); - line->Inlines->Append(bold); - } - else - { - line->Inlines->Append(block); - } - - line->Inlines->Append(ref new LineBreak()); - - Table->Append(line); - } -} - -DeviceListEntry^ DeviceList::FindDevice(String^ Id) -{ - auto i = std::find_if( - begin(m_List), - end(m_List), - [Id](DeviceListEntry^ e) {return e->Id == Id; }); - - if (i == end(m_List)) - { - return nullptr; - } - else - { - return *i; - } -} - -void DeviceList::OnFx2Added(DeviceWatcher ^ /* Sender */, DeviceInformation^ DevInterface) -{ - MainPage::Current->Dispatcher->RunAsync( - CoreDispatcherPriority::Normal, - ref new DispatchedHandler( - [this, DevInterface]()->void - { - MainPage::Current->NotifyUser("OnFx2Added: " + DevInterface->Id, NotifyType::StatusMessage); - - // search the device list for a device with a matching interface ID - auto match = FindDevice(DevInterface->Id); - - // If we found a match then mark it as verified and return - if (match != nullptr) - { - match->Matched = true; - return; - } - - // Create a new elemetn for this device interface, and queue up the query of its - // device information - match = ref new DeviceListEntry(DevInterface); - - // Add the new element to the end of the list of devices - m_List->Append(match); - })); -} - -void DeviceList::OnFx2Removed(DeviceWatcher ^ /* Sender */, DeviceInformationUpdate^ DevInterface) -{ - auto deviceId = DevInterface->Id; - - MainPage::Current->Dispatcher->RunAsync( - CoreDispatcherPriority::Normal, - ref new DispatchedHandler( - [this, deviceId]() - { - MainPage::Current->NotifyUser("OnFx2Removed: " + deviceId, NotifyType::StatusMessage); - - // Search the list of devices for one with a matching ID. Move the matched - // item to the end of the list. - auto i = std::remove_if( - begin(m_List), - end(m_List), - [deviceId](DeviceListEntry^ e) {return e->Id == deviceId; }); - - // if there's no match return. - if (i == end(m_List)) - { - return; - } - - // Remove the last item from the list. - MainPage::Current->NotifyUser("OnFx2Removed: " + deviceId + " removed", NotifyType::StatusMessage); - m_List->RemoveAtEnd(); - })); -} - -void DeviceList::OnFx2EnumerationComplete(DeviceWatcher ^ /* Sender */, Object ^ /* o */) -{ - MainPage::Current->Dispatcher->RunAsync( - CoreDispatcherPriority::Normal, - ref new DispatchedHandler( - [this]() - { - MainPage::Current->NotifyUser("OnFx2EnumerationComplete", NotifyType::StatusMessage); - - DeviceList^ me = this; - - // Move all the unmatched elements to the end of the list - auto i = std::remove_if( - begin(m_List), - end(m_List), - [](DeviceListEntry^ e) { return e->Matched == false; }); - - // Determine the number of unmatched entries - auto unmatchedCount = end(m_List) - i; - - while (unmatchedCount > 0) - { - m_List->RemoveAtEnd(); - unmatchedCount -= 1; - } - })); -} - -void DeviceList::SuspendDeviceWatcher(Object^, SuspendingEventArgs^) -{ - if (WatcherStarted) - { - m_WatcherSuspended = true; - StopFx2Watcher(); - } - else - { - m_WatcherSuspended = false; - } -} - -void DeviceList::ResumeDeviceWatcher(Object^, Object^) -{ - if (m_WatcherSuspended) - { - m_WatcherSuspended = false; - StartFx2Watcher(); - } -} diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/Package.appxmanifest b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/Package.appxmanifest deleted file mode 100644 index 0ec45a07..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/Package.appxmanifest +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version='1.0' encoding='utf-8'?> -<Package - xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" - xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" - xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" - xmlns:uap4="http://schemas.microsoft.com/appx/manifest/uap/windows10/4" - IgnorableNamespaces="uap mp uap4" - > - <Identity Name="Microsoft.SDKSamples.CustomCapability.CPP" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" Version="1.0.0.0" /> - <mp:PhoneIdentity PhoneProductId="26388851-6c33-4124-b1e5-96e859da28bf" PhonePublisherId="00000000-0000-0000-0000-000000000000"/> - <Properties> - <DisplayName>Custom Capability C++ Sample</DisplayName> - <PublisherDisplayName>Microsoft Corporation</PublisherDisplayName> - <Logo>Assets\StoreLogo-sdk.png</Logo> - </Properties> - <Dependencies> - <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.15063.0" MaxVersionTested="10.0.15063.0"/> - </Dependencies> - <Resources> - <Resource Language="x-generate"/> - </Resources> - <Applications> - <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="CustomCapability.App"> - <uap:VisualElements - DisplayName="Custom Capability C++ sample" - Square150x150Logo="Assets\squareTile-sdk.png" - Square44x44Logo="Assets\smallTile-sdk.png" - Description="Hsa C++ sample" - BackgroundColor="#00B2F0" - > - <uap:SplashScreen Image="Assets\splash-sdk.png"/> - <uap:DefaultTile> - <uap:ShowNameOnTiles> - <uap:ShowOn Tile="square150x150Logo"/> - </uap:ShowNameOnTiles> - </uap:DefaultTile> - </uap:VisualElements> - </Application> - </Applications> - -</Package> diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcClient.cpp b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcClient.cpp deleted file mode 100644 index 870d6306..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcClient.cpp +++ /dev/null @@ -1,177 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -// There is an error in the system header files that incorrectly -// places RpcStringBindingCompose in the app partition. -// Work around it by changing the WINAPI_FAMILY to desktop temporarily. -#pragma push_macro("WINAPI_FAMILY") -#undef WINAPI_FAMILY -#define WINAPI_FAMILY WINAPI_FAMILY_DESKTOP_APP -#include "RpcClient.h" -#pragma pop_macro("WINAPI_FAMILY") - -using namespace SDKTemplate; - -__int64 RpcClient::Initialize() -{ - RPC_STATUS status; - RPC_WSTR pszStringBinding = nullptr; - - status = RpcStringBindingCompose( - NULL, - reinterpret_cast<RPC_WSTR>(L"ncalrpc"), - NULL, - reinterpret_cast<RPC_WSTR>(RPC_STATIC_ENDPOINT), - NULL, - &pszStringBinding); - - if (status) - { - goto error_status; - } - - status = RpcBindingFromStringBinding( - pszStringBinding, - &hRpcBinding); - - if (status) - { - goto error_status; - } - - status = RpcStringFree(&pszStringBinding); - - if (status) - { - goto error_status; - } - - RpcTryExcept - { - ::RemoteOpen(hRpcBinding, &phContext); - } - RpcExcept(1) - { - status = RpcExceptionCode(); - } - RpcEndExcept - -error_status: - - return status; -} - -// -// Make RPC call to start metering. This is a blocking call and -// will return only after StopMetering is called. -// -__int64 RpcClient::StartMeteringAndWaitForStop(__int64 samplePeriod) -{ - __int64 ulCode = 0; - CallbackCount = 0; - MeteringData = 0; - - RpcTryExcept - { - ::StartMetering(phContext, samplePeriod, (__int64)this); - } - RpcExcept(1) - { - ulCode = RpcExceptionCode(); - } - RpcEndExcept - - return ulCode; -} - - -// -// Make rpc call SetSampleRate -// -__int64 RpcClient::SetSampleRate(int rate) -{ - __int64 ulCode = 0; - RpcTryExcept - { - ::SetSamplePeriod(phContext, rate); - } - RpcExcept(1) - { - ulCode = RpcExceptionCode(); - } - RpcEndExcept - return ulCode; -} - -// -// Make rpc call StopMetering -// -__int64 RpcClient::StopMetering() -{ - __int64 ulCode = 0; - RpcTryExcept - { - ::StopMetering(phContext); - } - RpcExcept(1) - { - ulCode = RpcExceptionCode(); - } - RpcEndExcept - return ulCode; -} - -RpcClient::~RpcClient() -{ - RPC_STATUS status; - - if (hRpcBinding != NULL) - { - RpcTryExcept - { - ::RemoteClose(&phContext); - } - RpcExcept(1) - { - // Ignoring the result of RemoteClose as nothing can be - // done on the client side with this return code - status = RpcExceptionCode(); - } - RpcEndExcept - - status = RpcBindingFree(&hRpcBinding); - hRpcBinding = NULL; - } -} - -// -// Metering rpc callback -// -void MeteringDataEvent(__int64 data, __int64 context) -{ - RpcClient* client = static_cast<RpcClient*>((PVOID)context); - client->MeteringData = data; - ++client->CallbackCount; -} - -///******************************************************/ -///* MIDL allocate and free */ -///******************************************************/ - -void __RPC_FAR * __RPC_USER midl_user_allocate(size_t len) -{ - return(malloc(len)); -} - -void __RPC_USER midl_user_free(void __RPC_FAR * ptr) -{ - free(ptr); -}
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcClient.h b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcClient.h deleted file mode 100644 index 0ee5ff78..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcClient.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// RpcClient.h -// - -#pragma once - -#define RPC_STATIC_ENDPOINT L"HsaSampleRpcEndpoint" - -#include "RpcInterface_h.h" - -namespace SDKTemplate -{ - /// <summary> - /// Client side RPC implementation - /// </summary> - private class RpcClient sealed - { - public: - ~RpcClient(); - __int64 Initialize(); - __int64 StartMeteringAndWaitForStop(__int64 samplePeriod); - __int64 StopMetering(); - __int64 SetSampleRate(int rate); - int CallbackCount; - __int64 MeteringData; - private: - handle_t hRpcBinding; - PCONTEXT_HANDLE_TYPE phContext; - }; -} diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcInterface.c b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcInterface.c deleted file mode 100644 index 0f988533..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcInterface.c +++ /dev/null @@ -1,6 +0,0 @@ -// RpcInterface_c.c expects _ARM_ to be set when building for ARM. -#ifdef _M_ARM -#define _ARM_ 1 -#endif - -#include "RpcInterface_c.c" diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcInterface_c.c b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcInterface_c.c deleted file mode 100644 index 8b05c1ea..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcInterface_c.c +++ /dev/null @@ -1,476 +0,0 @@ - - -/* this ALWAYS GENERATED file contains the RPC client stubs */ - - - /* File created by MIDL compiler version 8.01.0622 */ -/* at Mon Jan 18 19:14:07 2038 - */ -/* Compiler settings for C:\WinHEC 2017 Lab\Toaster Driver\Service\RpcInterface.Idl: - Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0622 - protocol : dce , ms_ext, c_ext, robust - error checks: allocation ref bounds_check enum stub_data - VC __declspec() decoration level: - __declspec(uuid()), __declspec(selectany), __declspec(novtable) - DECLSPEC_UUID(), MIDL_INTERFACE() -*/ -/* @@MIDL_FILE_HEADING( ) */ - -#if defined(_M_AMD64) - - -#pragma warning( disable: 4049 ) /* more than 64k source lines */ -#if _MSC_VER >= 1200 -#pragma warning(push) -#endif - -#pragma warning( disable: 4211 ) /* redefine extern to static */ -#pragma warning( disable: 4232 ) /* dllimport identity*/ -#pragma warning( disable: 4024 ) /* array to pointer mapping*/ - -#include <string.h> - -#include "RpcInterface_h.h" - -#define TYPE_FORMAT_STRING_SIZE 23 -#define PROC_FORMAT_STRING_SIZE 245 -#define EXPR_FORMAT_STRING_SIZE 1 -#define TRANSMIT_AS_TABLE_SIZE 0 -#define WIRE_MARSHAL_TABLE_SIZE 0 - -typedef struct _RpcInterface_MIDL_TYPE_FORMAT_STRING - { - short Pad; - unsigned char Format[ TYPE_FORMAT_STRING_SIZE ]; - } RpcInterface_MIDL_TYPE_FORMAT_STRING; - -typedef struct _RpcInterface_MIDL_PROC_FORMAT_STRING - { - short Pad; - unsigned char Format[ PROC_FORMAT_STRING_SIZE ]; - } RpcInterface_MIDL_PROC_FORMAT_STRING; - -typedef struct _RpcInterface_MIDL_EXPR_FORMAT_STRING - { - long Pad; - unsigned char Format[ EXPR_FORMAT_STRING_SIZE ]; - } RpcInterface_MIDL_EXPR_FORMAT_STRING; - - -static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax = -{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}; - - -extern const RpcInterface_MIDL_TYPE_FORMAT_STRING RpcInterface__MIDL_TypeFormatString; -extern const RpcInterface_MIDL_PROC_FORMAT_STRING RpcInterface__MIDL_ProcFormatString; -extern const RpcInterface_MIDL_EXPR_FORMAT_STRING RpcInterface__MIDL_ExprFormatString; - -#define GENERIC_BINDING_TABLE_SIZE 0 - - -/* Standard interface: RpcInterface, ver. 1.0, - GUID={0x906B0CE0,0xC70B,0x1067,{0xB3,0x17,0x00,0xDD,0x01,0x06,0x62,0xDA}} */ - - -extern const MIDL_SERVER_INFO RpcInterface_ServerInfo; - - -extern const RPC_DISPATCH_TABLE RpcInterface_v1_0_DispatchTable; - -static const RPC_CLIENT_INTERFACE RpcInterface___RpcClientInterface = - { - sizeof(RPC_CLIENT_INTERFACE), - {{0x906B0CE0,0xC70B,0x1067,{0xB3,0x17,0x00,0xDD,0x01,0x06,0x62,0xDA}},{1,0}}, - {{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}, - (RPC_DISPATCH_TABLE*)&RpcInterface_v1_0_DispatchTable, - 0, - 0, - 0, - &RpcInterface_ServerInfo, - 0x04000000 - }; -RPC_IF_HANDLE RpcInterface_v1_0_c_ifspec = (RPC_IF_HANDLE)& RpcInterface___RpcClientInterface; - -extern const MIDL_STUB_DESC RpcInterface_StubDesc; - -static RPC_BINDING_HANDLE RpcInterface__MIDL_AutoBindHandle; - - -void RemoteOpen( - /* [in] */ handle_t hBinding, - /* [out] */ PPCONTEXT_HANDLE_TYPE pphContext) -{ - - NdrClientCall2( - ( PMIDL_STUB_DESC )&RpcInterface_StubDesc, - (PFORMAT_STRING) &RpcInterface__MIDL_ProcFormatString.Format[0], - hBinding, - pphContext); - -} - - -void RemoteClose( - /* [out][in] */ PPCONTEXT_HANDLE_TYPE pphContext) -{ - - NdrClientCall2( - ( PMIDL_STUB_DESC )&RpcInterface_StubDesc, - (PFORMAT_STRING) &RpcInterface__MIDL_ProcFormatString.Format[36], - pphContext); - -} - - -void StartMetering( - /* [in] */ PCONTEXT_HANDLE_TYPE phContext, - /* [in] */ __int64 samplePeriod, - /* [optional][in] */ __int64 context) -{ - - NdrClientCall2( - ( PMIDL_STUB_DESC )&RpcInterface_StubDesc, - (PFORMAT_STRING) &RpcInterface__MIDL_ProcFormatString.Format[74], - phContext, - samplePeriod, - context); - -} - - -void SetSamplePeriod( - /* [in] */ PCONTEXT_HANDLE_TYPE phContext, - /* [in] */ __int64 samplePeriod) -{ - - NdrClientCall2( - ( PMIDL_STUB_DESC )&RpcInterface_StubDesc, - (PFORMAT_STRING) &RpcInterface__MIDL_ProcFormatString.Format[124], - phContext, - samplePeriod); - -} - - -void StopMetering( - /* [in] */ PCONTEXT_HANDLE_TYPE phContext) -{ - - NdrClientCall2( - ( PMIDL_STUB_DESC )&RpcInterface_StubDesc, - (PFORMAT_STRING) &RpcInterface__MIDL_ProcFormatString.Format[168], - phContext); - -} - - -#if !defined(__RPC_WIN64__) -#error Invalid build platform for this stub. -#endif - -static const RpcInterface_MIDL_PROC_FORMAT_STRING RpcInterface__MIDL_ProcFormatString = - { - 0, - { - - /* Procedure RemoteOpen */ - - 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 2 */ NdrFcLong( 0x0 ), /* 0 */ -/* 6 */ NdrFcShort( 0x0 ), /* 0 */ -/* 8 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ -/* 10 */ 0x32, /* FC_BIND_PRIMITIVE */ - 0x0, /* 0 */ -/* 12 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 14 */ NdrFcShort( 0x0 ), /* 0 */ -/* 16 */ NdrFcShort( 0x38 ), /* 56 */ -/* 18 */ 0x40, /* Oi2 Flags: has ext, */ - 0x1, /* 1 */ -/* 20 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 22 */ NdrFcShort( 0x0 ), /* 0 */ -/* 24 */ NdrFcShort( 0x0 ), /* 0 */ -/* 26 */ NdrFcShort( 0x0 ), /* 0 */ -/* 28 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter pphContext */ - -/* 30 */ NdrFcShort( 0x110 ), /* Flags: out, simple ref, */ -/* 32 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 34 */ NdrFcShort( 0x6 ), /* Type Offset=6 */ - - /* Procedure RemoteClose */ - -/* 36 */ 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 38 */ NdrFcLong( 0x0 ), /* 0 */ -/* 42 */ NdrFcShort( 0x1 ), /* 1 */ -/* 44 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 46 */ 0x30, /* FC_BIND_CONTEXT */ - 0xe0, /* Ctxt flags: via ptr, in, out, */ -/* 48 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 50 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 52 */ NdrFcShort( 0x38 ), /* 56 */ -/* 54 */ NdrFcShort( 0x38 ), /* 56 */ -/* 56 */ 0x40, /* Oi2 Flags: has ext, */ - 0x1, /* 1 */ -/* 58 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 60 */ NdrFcShort( 0x0 ), /* 0 */ -/* 62 */ NdrFcShort( 0x0 ), /* 0 */ -/* 64 */ NdrFcShort( 0x0 ), /* 0 */ -/* 66 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter pphContext */ - -/* 68 */ NdrFcShort( 0x118 ), /* Flags: in, out, simple ref, */ -/* 70 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 72 */ NdrFcShort( 0xe ), /* Type Offset=14 */ - - /* Procedure StartMetering */ - -/* 74 */ 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 76 */ NdrFcLong( 0x0 ), /* 0 */ -/* 80 */ NdrFcShort( 0x2 ), /* 2 */ -/* 82 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */ -/* 84 */ 0x30, /* FC_BIND_CONTEXT */ - 0x40, /* Ctxt flags: in, */ -/* 86 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 88 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 90 */ NdrFcShort( 0x44 ), /* 68 */ -/* 92 */ NdrFcShort( 0x0 ), /* 0 */ -/* 94 */ 0x40, /* Oi2 Flags: has ext, */ - 0x3, /* 3 */ -/* 96 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 98 */ NdrFcShort( 0x0 ), /* 0 */ -/* 100 */ NdrFcShort( 0x0 ), /* 0 */ -/* 102 */ NdrFcShort( 0x0 ), /* 0 */ -/* 104 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter phContext */ - -/* 106 */ NdrFcShort( 0x8 ), /* Flags: in, */ -/* 108 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 110 */ NdrFcShort( 0x12 ), /* Type Offset=18 */ - - /* Parameter samplePeriod */ - -/* 112 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 114 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 116 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - /* Parameter context */ - -/* 118 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 120 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ -/* 122 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - /* Procedure SetSamplePeriod */ - -/* 124 */ 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 126 */ NdrFcLong( 0x0 ), /* 0 */ -/* 130 */ NdrFcShort( 0x3 ), /* 3 */ -/* 132 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ -/* 134 */ 0x30, /* FC_BIND_CONTEXT */ - 0x40, /* Ctxt flags: in, */ -/* 136 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 138 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 140 */ NdrFcShort( 0x34 ), /* 52 */ -/* 142 */ NdrFcShort( 0x0 ), /* 0 */ -/* 144 */ 0x40, /* Oi2 Flags: has ext, */ - 0x2, /* 2 */ -/* 146 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 148 */ NdrFcShort( 0x0 ), /* 0 */ -/* 150 */ NdrFcShort( 0x0 ), /* 0 */ -/* 152 */ NdrFcShort( 0x0 ), /* 0 */ -/* 154 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter phContext */ - -/* 156 */ NdrFcShort( 0x8 ), /* Flags: in, */ -/* 158 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 160 */ NdrFcShort( 0x12 ), /* Type Offset=18 */ - - /* Parameter samplePeriod */ - -/* 162 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 164 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 166 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - /* Procedure StopMetering */ - -/* 168 */ 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 170 */ NdrFcLong( 0x0 ), /* 0 */ -/* 174 */ NdrFcShort( 0x4 ), /* 4 */ -/* 176 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 178 */ 0x30, /* FC_BIND_CONTEXT */ - 0x40, /* Ctxt flags: in, */ -/* 180 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 182 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 184 */ NdrFcShort( 0x24 ), /* 36 */ -/* 186 */ NdrFcShort( 0x0 ), /* 0 */ -/* 188 */ 0x40, /* Oi2 Flags: has ext, */ - 0x1, /* 1 */ -/* 190 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 192 */ NdrFcShort( 0x0 ), /* 0 */ -/* 194 */ NdrFcShort( 0x0 ), /* 0 */ -/* 196 */ NdrFcShort( 0x0 ), /* 0 */ -/* 198 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter phContext */ - -/* 200 */ NdrFcShort( 0x8 ), /* Flags: in, */ -/* 202 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 204 */ NdrFcShort( 0x12 ), /* Type Offset=18 */ - - /* Procedure MeteringDataEvent */ - -/* 206 */ 0x34, /* FC_CALLBACK_HANDLE */ - 0x48, /* Old Flags: */ -/* 208 */ NdrFcLong( 0x0 ), /* 0 */ -/* 212 */ NdrFcShort( 0x0 ), /* 0 */ -/* 214 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ -/* 216 */ NdrFcShort( 0x20 ), /* 32 */ -/* 218 */ NdrFcShort( 0x0 ), /* 0 */ -/* 220 */ 0x40, /* Oi2 Flags: has ext, */ - 0x2, /* 2 */ -/* 222 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 224 */ NdrFcShort( 0x0 ), /* 0 */ -/* 226 */ NdrFcShort( 0x0 ), /* 0 */ -/* 228 */ NdrFcShort( 0x0 ), /* 0 */ -/* 230 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter data */ - -/* 232 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 234 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 236 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - /* Parameter context */ - -/* 238 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 240 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 242 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - 0x0 - } - }; - -static const RpcInterface_MIDL_TYPE_FORMAT_STRING RpcInterface__MIDL_TypeFormatString = - { - 0, - { - NdrFcShort( 0x0 ), /* 0 */ -/* 2 */ - 0x11, 0x4, /* FC_RP [alloced_on_stack] */ -/* 4 */ NdrFcShort( 0x2 ), /* Offset= 2 (6) */ -/* 6 */ 0x30, /* FC_BIND_CONTEXT */ - 0xa0, /* Ctxt flags: via ptr, out, */ -/* 8 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 10 */ - 0x11, 0x4, /* FC_RP [alloced_on_stack] */ -/* 12 */ NdrFcShort( 0x2 ), /* Offset= 2 (14) */ -/* 14 */ 0x30, /* FC_BIND_CONTEXT */ - 0xe1, /* Ctxt flags: via ptr, in, out, can't be null */ -/* 16 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 18 */ 0x30, /* FC_BIND_CONTEXT */ - 0x41, /* Ctxt flags: in, can't be null */ -/* 20 */ 0x0, /* 0 */ - 0x0, /* 0 */ - - 0x0 - } - }; - -static const unsigned short RpcInterface_FormatStringOffsetTable[] = - { - 0, - 36, - 74, - 124, - 168, - }; - - -static const unsigned short _callbackRpcInterface_FormatStringOffsetTable[] = - { - 206 - }; - - -static const MIDL_STUB_DESC RpcInterface_StubDesc = - { - (void *)& RpcInterface___RpcClientInterface, - MIDL_user_allocate, - MIDL_user_free, - &RpcInterface__MIDL_AutoBindHandle, - 0, - 0, - 0, - 0, - RpcInterface__MIDL_TypeFormatString.Format, - 1, /* -error bounds_check flag */ - 0x50002, /* Ndr library version */ - 0, - 0x801026e, /* MIDL Version 8.1.622 */ - 0, - 0, - 0, /* notify & notify_flag routine table */ - 0x1, /* MIDL flag */ - 0, /* cs routines */ - 0, /* proxy/server info */ - 0 - }; - -static const RPC_DISPATCH_FUNCTION RpcInterface_table[] = - { - NdrServerCall2, - 0 - }; -static const RPC_DISPATCH_TABLE RpcInterface_v1_0_DispatchTable = - { - 1, - (RPC_DISPATCH_FUNCTION*)RpcInterface_table - }; - -static const SERVER_ROUTINE RpcInterface_ServerRoutineTable[] = - { - (SERVER_ROUTINE)MeteringDataEvent - }; - -static const MIDL_SERVER_INFO RpcInterface_ServerInfo = - { - &RpcInterface_StubDesc, - RpcInterface_ServerRoutineTable, - RpcInterface__MIDL_ProcFormatString.Format, - _callbackRpcInterface_FormatStringOffsetTable, - 0, - 0, - 0, - 0}; -#if _MSC_VER >= 1200 -#pragma warning(pop) -#endif - - -#endif /* defined(_M_AMD64)*/ - diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcInterface_h.h b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcInterface_h.h deleted file mode 100644 index a0e2dcac..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcInterface_h.h +++ /dev/null @@ -1,112 +0,0 @@ - - -/* this ALWAYS GENERATED file contains the definitions for the interfaces */ - - - /* File created by MIDL compiler version 8.01.0622 */ -/* at Mon Jan 18 19:14:07 2038 - */ -/* Compiler settings for C:\WinHEC 2017 Lab\Toaster Driver\Service\RpcInterface.Idl: - Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0622 - protocol : dce , ms_ext, c_ext, robust - error checks: allocation ref bounds_check enum stub_data - VC __declspec() decoration level: - __declspec(uuid()), __declspec(selectany), __declspec(novtable) - DECLSPEC_UUID(), MIDL_INTERFACE() -*/ -/* @@MIDL_FILE_HEADING( ) */ - -#pragma warning( disable: 4049 ) /* more than 64k source lines */ - - -/* verify that the <rpcndr.h> version is high enough to compile this file*/ -#ifndef __REQUIRED_RPCNDR_H_VERSION__ -#define __REQUIRED_RPCNDR_H_VERSION__ 475 -#endif - -#include "rpc.h" -#include "rpcndr.h" - -#ifndef __RPCNDR_H_VERSION__ -#error this stub requires an updated version of <rpcndr.h> -#endif /* __RPCNDR_H_VERSION__ */ - - -#ifndef __RpcInterface_h_h__ -#define __RpcInterface_h_h__ - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma once -#endif - -#if defined(__cplusplus) -#if defined(__MIDL_USE_C_ENUM) -#define MIDL_ENUM enum -#else -#define MIDL_ENUM enum class -#endif -#endif - - -/* Forward Declarations */ - -/* header files for imported files */ -#include "oaidl.h" - -#ifdef __cplusplus -extern "C"{ -#endif - - -#ifndef __RpcInterface_INTERFACE_DEFINED__ -#define __RpcInterface_INTERFACE_DEFINED__ - -/* interface RpcInterface */ -/* [unique][version][uuid] */ - -typedef /* [context_handle] */ void *PCONTEXT_HANDLE_TYPE; - -typedef /* [ref] */ PCONTEXT_HANDLE_TYPE *PPCONTEXT_HANDLE_TYPE; - -void RemoteOpen( - /* [in] */ handle_t hBinding, - /* [out] */ PPCONTEXT_HANDLE_TYPE pphContext); - -void RemoteClose( - /* [out][in] */ PPCONTEXT_HANDLE_TYPE pphContext); - -void StartMetering( - /* [in] */ PCONTEXT_HANDLE_TYPE phContext, - /* [in] */ __int64 samplePeriod, - /* [optional][in] */ __int64 context); - -void SetSamplePeriod( - /* [in] */ PCONTEXT_HANDLE_TYPE phContext, - /* [in] */ __int64 samplePeriod); - -void StopMetering( - /* [in] */ PCONTEXT_HANDLE_TYPE phContext); - -/* [callback] */ void MeteringDataEvent( - /* [in] */ __int64 data, - /* [optional][in] */ __int64 context); - - - -extern RPC_IF_HANDLE RpcInterface_v1_0_c_ifspec; -extern RPC_IF_HANDLE RpcInterface_v1_0_s_ifspec; -#endif /* __RpcInterface_INTERFACE_DEFINED__ */ - -/* Additional Prototypes for ALL interfaces */ - -void __RPC_USER PCONTEXT_HANDLE_TYPE_rundown( PCONTEXT_HANDLE_TYPE ); - -/* end of Additional Prototypes */ - -#ifdef __cplusplus -} -#endif - -#endif - - diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcInterface_s.c b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcInterface_s.c deleted file mode 100644 index ec58170d..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/RpcInterface_s.c +++ /dev/null @@ -1,430 +0,0 @@ - - -/* this ALWAYS GENERATED file contains the RPC server stubs */ - - - /* File created by MIDL compiler version 8.01.0622 */ -/* at Mon Jan 18 19:14:07 2038 - */ -/* Compiler settings for C:\WinHEC 2017 Lab\Toaster Driver\Service\RpcInterface.Idl: - Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0622 - protocol : dce , ms_ext, c_ext, robust - error checks: allocation ref bounds_check enum stub_data - VC __declspec() decoration level: - __declspec(uuid()), __declspec(selectany), __declspec(novtable) - DECLSPEC_UUID(), MIDL_INTERFACE() -*/ -/* @@MIDL_FILE_HEADING( ) */ - -#if defined(_M_AMD64) - - -#pragma warning( disable: 4049 ) /* more than 64k source lines */ -#if _MSC_VER >= 1200 -#pragma warning(push) -#endif - -#pragma warning( disable: 4211 ) /* redefine extern to static */ -#pragma warning( disable: 4232 ) /* dllimport identity*/ -#pragma warning( disable: 4024 ) /* array to pointer mapping*/ - -#include <string.h> -#include "RpcInterface_h.h" - -#define TYPE_FORMAT_STRING_SIZE 23 -#define PROC_FORMAT_STRING_SIZE 245 -#define EXPR_FORMAT_STRING_SIZE 1 -#define TRANSMIT_AS_TABLE_SIZE 0 -#define WIRE_MARSHAL_TABLE_SIZE 0 - -typedef struct _RpcInterface_MIDL_TYPE_FORMAT_STRING - { - short Pad; - unsigned char Format[ TYPE_FORMAT_STRING_SIZE ]; - } RpcInterface_MIDL_TYPE_FORMAT_STRING; - -typedef struct _RpcInterface_MIDL_PROC_FORMAT_STRING - { - short Pad; - unsigned char Format[ PROC_FORMAT_STRING_SIZE ]; - } RpcInterface_MIDL_PROC_FORMAT_STRING; - -typedef struct _RpcInterface_MIDL_EXPR_FORMAT_STRING - { - long Pad; - unsigned char Format[ EXPR_FORMAT_STRING_SIZE ]; - } RpcInterface_MIDL_EXPR_FORMAT_STRING; - - -static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax = -{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}; - -extern const RpcInterface_MIDL_TYPE_FORMAT_STRING RpcInterface__MIDL_TypeFormatString; -extern const RpcInterface_MIDL_PROC_FORMAT_STRING RpcInterface__MIDL_ProcFormatString; -extern const RpcInterface_MIDL_EXPR_FORMAT_STRING RpcInterface__MIDL_ExprFormatString; - -/* Standard interface: RpcInterface, ver. 1.0, - GUID={0x906B0CE0,0xC70B,0x1067,{0xB3,0x17,0x00,0xDD,0x01,0x06,0x62,0xDA}} */ - - -extern const MIDL_SERVER_INFO RpcInterface_ServerInfo; - -extern const RPC_DISPATCH_TABLE RpcInterface_v1_0_DispatchTable; - -static const RPC_SERVER_INTERFACE RpcInterface___RpcServerInterface = - { - sizeof(RPC_SERVER_INTERFACE), - {{0x906B0CE0,0xC70B,0x1067,{0xB3,0x17,0x00,0xDD,0x01,0x06,0x62,0xDA}},{1,0}}, - {{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}}, - (RPC_DISPATCH_TABLE*)&RpcInterface_v1_0_DispatchTable, - 0, - 0, - 0, - &RpcInterface_ServerInfo, - 0x04000000 - }; -RPC_IF_HANDLE RpcInterface_v1_0_s_ifspec = (RPC_IF_HANDLE)& RpcInterface___RpcServerInterface; - -extern const MIDL_STUB_DESC RpcInterface_StubDesc; - - extern const MIDL_STUBLESS_PROXY_INFO RpcInterface_ProxyInfo; - -/* [callback] */ void MeteringDataEvent( - /* [in] */ __int64 data, - /* [optional][in] */ __int64 context) -{ - - NdrClientCall2( - ( PMIDL_STUB_DESC )&RpcInterface_StubDesc, - (PFORMAT_STRING) &RpcInterface__MIDL_ProcFormatString.Format[206], - data, - context); - -} - -extern const NDR_RUNDOWN RundownRoutines[]; - -#if !defined(__RPC_WIN64__) -#error Invalid build platform for this stub. -#endif - -static const RpcInterface_MIDL_PROC_FORMAT_STRING RpcInterface__MIDL_ProcFormatString = - { - 0, - { - - /* Procedure RemoteOpen */ - - 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 2 */ NdrFcLong( 0x0 ), /* 0 */ -/* 6 */ NdrFcShort( 0x0 ), /* 0 */ -/* 8 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ -/* 10 */ 0x32, /* FC_BIND_PRIMITIVE */ - 0x0, /* 0 */ -/* 12 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 14 */ NdrFcShort( 0x0 ), /* 0 */ -/* 16 */ NdrFcShort( 0x38 ), /* 56 */ -/* 18 */ 0x40, /* Oi2 Flags: has ext, */ - 0x1, /* 1 */ -/* 20 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 22 */ NdrFcShort( 0x0 ), /* 0 */ -/* 24 */ NdrFcShort( 0x0 ), /* 0 */ -/* 26 */ NdrFcShort( 0x0 ), /* 0 */ -/* 28 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter pphContext */ - -/* 30 */ NdrFcShort( 0x110 ), /* Flags: out, simple ref, */ -/* 32 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 34 */ NdrFcShort( 0x6 ), /* Type Offset=6 */ - - /* Procedure RemoteClose */ - -/* 36 */ 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 38 */ NdrFcLong( 0x0 ), /* 0 */ -/* 42 */ NdrFcShort( 0x1 ), /* 1 */ -/* 44 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 46 */ 0x30, /* FC_BIND_CONTEXT */ - 0xe0, /* Ctxt flags: via ptr, in, out, */ -/* 48 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 50 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 52 */ NdrFcShort( 0x38 ), /* 56 */ -/* 54 */ NdrFcShort( 0x38 ), /* 56 */ -/* 56 */ 0x40, /* Oi2 Flags: has ext, */ - 0x1, /* 1 */ -/* 58 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 60 */ NdrFcShort( 0x0 ), /* 0 */ -/* 62 */ NdrFcShort( 0x0 ), /* 0 */ -/* 64 */ NdrFcShort( 0x0 ), /* 0 */ -/* 66 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter pphContext */ - -/* 68 */ NdrFcShort( 0x118 ), /* Flags: in, out, simple ref, */ -/* 70 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 72 */ NdrFcShort( 0xe ), /* Type Offset=14 */ - - /* Procedure StartMetering */ - -/* 74 */ 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 76 */ NdrFcLong( 0x0 ), /* 0 */ -/* 80 */ NdrFcShort( 0x2 ), /* 2 */ -/* 82 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */ -/* 84 */ 0x30, /* FC_BIND_CONTEXT */ - 0x40, /* Ctxt flags: in, */ -/* 86 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 88 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 90 */ NdrFcShort( 0x44 ), /* 68 */ -/* 92 */ NdrFcShort( 0x0 ), /* 0 */ -/* 94 */ 0x40, /* Oi2 Flags: has ext, */ - 0x3, /* 3 */ -/* 96 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 98 */ NdrFcShort( 0x0 ), /* 0 */ -/* 100 */ NdrFcShort( 0x0 ), /* 0 */ -/* 102 */ NdrFcShort( 0x0 ), /* 0 */ -/* 104 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter phContext */ - -/* 106 */ NdrFcShort( 0x8 ), /* Flags: in, */ -/* 108 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 110 */ NdrFcShort( 0x12 ), /* Type Offset=18 */ - - /* Parameter samplePeriod */ - -/* 112 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 114 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 116 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - /* Parameter context */ - -/* 118 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 120 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ -/* 122 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - /* Procedure SetSamplePeriod */ - -/* 124 */ 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 126 */ NdrFcLong( 0x0 ), /* 0 */ -/* 130 */ NdrFcShort( 0x3 ), /* 3 */ -/* 132 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ -/* 134 */ 0x30, /* FC_BIND_CONTEXT */ - 0x40, /* Ctxt flags: in, */ -/* 136 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 138 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 140 */ NdrFcShort( 0x34 ), /* 52 */ -/* 142 */ NdrFcShort( 0x0 ), /* 0 */ -/* 144 */ 0x40, /* Oi2 Flags: has ext, */ - 0x2, /* 2 */ -/* 146 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 148 */ NdrFcShort( 0x0 ), /* 0 */ -/* 150 */ NdrFcShort( 0x0 ), /* 0 */ -/* 152 */ NdrFcShort( 0x0 ), /* 0 */ -/* 154 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter phContext */ - -/* 156 */ NdrFcShort( 0x8 ), /* Flags: in, */ -/* 158 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 160 */ NdrFcShort( 0x12 ), /* Type Offset=18 */ - - /* Parameter samplePeriod */ - -/* 162 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 164 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 166 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - /* Procedure StopMetering */ - -/* 168 */ 0x0, /* 0 */ - 0x48, /* Old Flags: */ -/* 170 */ NdrFcLong( 0x0 ), /* 0 */ -/* 174 */ NdrFcShort( 0x4 ), /* 4 */ -/* 176 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 178 */ 0x30, /* FC_BIND_CONTEXT */ - 0x40, /* Ctxt flags: in, */ -/* 180 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 182 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 184 */ NdrFcShort( 0x24 ), /* 36 */ -/* 186 */ NdrFcShort( 0x0 ), /* 0 */ -/* 188 */ 0x40, /* Oi2 Flags: has ext, */ - 0x1, /* 1 */ -/* 190 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 192 */ NdrFcShort( 0x0 ), /* 0 */ -/* 194 */ NdrFcShort( 0x0 ), /* 0 */ -/* 196 */ NdrFcShort( 0x0 ), /* 0 */ -/* 198 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter phContext */ - -/* 200 */ NdrFcShort( 0x8 ), /* Flags: in, */ -/* 202 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 204 */ NdrFcShort( 0x12 ), /* Type Offset=18 */ - - /* Procedure MeteringDataEvent */ - -/* 206 */ 0x34, /* FC_CALLBACK_HANDLE */ - 0x48, /* Old Flags: */ -/* 208 */ NdrFcLong( 0x0 ), /* 0 */ -/* 212 */ NdrFcShort( 0x0 ), /* 0 */ -/* 214 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */ -/* 216 */ NdrFcShort( 0x20 ), /* 32 */ -/* 218 */ NdrFcShort( 0x0 ), /* 0 */ -/* 220 */ 0x40, /* Oi2 Flags: has ext, */ - 0x2, /* 2 */ -/* 222 */ 0xa, /* 10 */ - 0x1, /* Ext Flags: new corr desc, */ -/* 224 */ NdrFcShort( 0x0 ), /* 0 */ -/* 226 */ NdrFcShort( 0x0 ), /* 0 */ -/* 228 */ NdrFcShort( 0x0 ), /* 0 */ -/* 230 */ NdrFcShort( 0x0 ), /* 0 */ - - /* Parameter data */ - -/* 232 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 234 */ NdrFcShort( 0x0 ), /* X64 Stack size/offset = 0 */ -/* 236 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - /* Parameter context */ - -/* 238 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */ -/* 240 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */ -/* 242 */ 0xb, /* FC_HYPER */ - 0x0, /* 0 */ - - 0x0 - } - }; - -static const RpcInterface_MIDL_TYPE_FORMAT_STRING RpcInterface__MIDL_TypeFormatString = - { - 0, - { - NdrFcShort( 0x0 ), /* 0 */ -/* 2 */ - 0x11, 0x4, /* FC_RP [alloced_on_stack] */ -/* 4 */ NdrFcShort( 0x2 ), /* Offset= 2 (6) */ -/* 6 */ 0x30, /* FC_BIND_CONTEXT */ - 0xa0, /* Ctxt flags: via ptr, out, */ -/* 8 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 10 */ - 0x11, 0x4, /* FC_RP [alloced_on_stack] */ -/* 12 */ NdrFcShort( 0x2 ), /* Offset= 2 (14) */ -/* 14 */ 0x30, /* FC_BIND_CONTEXT */ - 0xe1, /* Ctxt flags: via ptr, in, out, can't be null */ -/* 16 */ 0x0, /* 0 */ - 0x0, /* 0 */ -/* 18 */ 0x30, /* FC_BIND_CONTEXT */ - 0x41, /* Ctxt flags: in, can't be null */ -/* 20 */ 0x0, /* 0 */ - 0x0, /* 0 */ - - 0x0 - } - }; - -static const NDR_RUNDOWN RundownRoutines[] = - { - PCONTEXT_HANDLE_TYPE_rundown - }; - - -static const unsigned short RpcInterface_FormatStringOffsetTable[] = - { - 0, - 36, - 74, - 124, - 168, - }; - - -static const unsigned short _callbackRpcInterface_FormatStringOffsetTable[] = - { - 206 - }; - - -static const MIDL_STUB_DESC RpcInterface_StubDesc = - { - (void *)& RpcInterface___RpcServerInterface, - MIDL_user_allocate, - MIDL_user_free, - 0, - RundownRoutines, - 0, - 0, - 0, - RpcInterface__MIDL_TypeFormatString.Format, - 1, /* -error bounds_check flag */ - 0x50002, /* Ndr library version */ - 0, - 0x801026e, /* MIDL Version 8.1.622 */ - 0, - 0, - 0, /* notify & notify_flag routine table */ - 0x1, /* MIDL flag */ - 0, /* cs routines */ - 0, /* proxy/server info */ - 0 - }; - -static const RPC_DISPATCH_FUNCTION RpcInterface_table[] = - { - NdrServerCall2, - NdrServerCall2, - NdrServerCall2, - NdrServerCall2, - NdrServerCall2, - 0 - }; -static const RPC_DISPATCH_TABLE RpcInterface_v1_0_DispatchTable = - { - 5, - (RPC_DISPATCH_FUNCTION*)RpcInterface_table - }; - -static const SERVER_ROUTINE RpcInterface_ServerRoutineTable[] = - { - (SERVER_ROUTINE)RemoteOpen, - (SERVER_ROUTINE)RemoteClose, - (SERVER_ROUTINE)StartMetering, - (SERVER_ROUTINE)SetSamplePeriod, - (SERVER_ROUTINE)StopMetering, - }; - -static const MIDL_SERVER_INFO RpcInterface_ServerInfo = - { - &RpcInterface_StubDesc, - RpcInterface_ServerRoutineTable, - RpcInterface__MIDL_ProcFormatString.Format, - RpcInterface_FormatStringOffsetTable, - 0, - 0, - 0, - 0}; -#if _MSC_VER >= 1200 -#pragma warning(pop) -#endif - - -#endif /* defined(_M_AMD64)*/ - diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/SampleConfiguration.cpp b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/SampleConfiguration.cpp deleted file mode 100644 index a808cf83..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/SampleConfiguration.cpp +++ /dev/null @@ -1,21 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -#include "pch.h" -#include "MainPage.xaml.h" -#include "SampleConfiguration.h" - -using namespace SDKTemplate; - -Platform::Array<Scenario>^ MainPage::scenariosInner = ref new Platform::Array<Scenario> -{ - { "Connect to an NT Service", "SDKTemplate.MeteringData" }, -}; diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/SampleConfiguration.h b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/SampleConfiguration.h deleted file mode 100644 index 22581275..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/SampleConfiguration.h +++ /dev/null @@ -1,47 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -#pragma once -#include "pch.h" - -namespace SDKTemplate -{ - value struct Scenario; - - partial ref class MainPage - { - internal: - static property Platform::String^ FEATURE_NAME - { - Platform::String^ get() - { - return "Custom Capability C++ sample"; - } - } - - static property Platform::Array<Scenario>^ scenarios - { - Platform::Array<Scenario>^ get() - { - return scenariosInner; - } - } - - private: - static Platform::Array<Scenario>^ scenariosInner; - }; - - public value struct Scenario - { - Platform::String^ Title; - Platform::String^ ClassName; - }; -} diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/Scenario1_MeteringData.xaml b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/Scenario1_MeteringData.xaml deleted file mode 100644 index 0636f74d..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/Scenario1_MeteringData.xaml +++ /dev/null @@ -1,68 +0,0 @@ -<!-- -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* ---> -<Page - x:Class="SDKTemplate.MeteringData" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - mc:Ignorable="d"> - - <ScrollViewer Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Padding="12,10,12,12"> - <Grid> - <Grid.RowDefinitions> - <RowDefinition Height="Auto"/> - <RowDefinition Height="*"/> - </Grid.RowDefinitions> - <StackPanel Margin="0,0,0,10"> - <TextBlock Text="Description:" Style="{StaticResource SampleHeaderTextStyle}"/> - <TextBlock Style="{StaticResource ScenarioDescriptionTextStyle}" TextWrapping="Wrap"> - This scenario demonstrates RPC communication between an app and an NT service. For demonstration purposes, the service reads data from an imaginary device. - </TextBlock> - <StackPanel BorderThickness="2" BorderBrush="{ThemeResource ButtonBorderThemeBrush}" Margin="0,10,0,0" Padding="5"> - <TextBlock TextWrapping="Wrap"> - <Run FontWeight="Bold" Text="Step 1: Choose a period at which the samples will be pushed from the NT service"/> - </TextBlock> - <TextBlock TextWrapping="Wrap" Margin="0,10,5,0"> - Sample Period (ms): <Run Text="{x:Bind SamplePeriodSlider.Value, Mode=OneWay}"/> - </TextBlock> - <Slider x:Name="SamplePeriodSlider" HorizontalAlignment="Left" Width="300" IsEnabled="{x:Bind ViewModel.SliderEnabled, Mode=OneWay}" VerticalAlignment="Top" Minimum="1" Maximum="1000" ValueChanged="slider_ValueChanged" FontSize="20" Value="{x:Bind ViewModel.SliderValue, Mode=OneWay}"/> - </StackPanel> - <StackPanel BorderThickness="2" BorderBrush="{ThemeResource ButtonBorderThemeBrush}" Margin="0,10,0,0" Padding="5"> - <TextBlock TextWrapping="Wrap"> - <Run FontWeight="Bold" Text="Step 2: Click start to receive samples from the NT service"/> - </TextBlock> - <StackPanel Orientation="Horizontal" Margin="0,10,0,0"> - <Button IsEnabled="{x:Bind ViewModel.StartButtonEnabled, Mode=OneWay}" Content="Start" Click="button_Click_StartMetering"/> - <Button IsEnabled="{x:Bind ViewModel.StopButtonEnabled, Mode=OneWay}" Content="Stop" Click="button_Click_StopMetering" Margin="10,0,0,0"/> - </StackPanel> - </StackPanel> - <StackPanel BorderThickness="2" BorderBrush="{ThemeResource ButtonBorderThemeBrush}" Margin="0,10,0,0" Padding="5"> - <TextBlock TextWrapping="Wrap"> - <Run FontWeight="Bold" Text="Step 3: Observe the expected and actual incoming sample rate"/> - </TextBlock> - <TextBlock Margin="0,10,0,0"> - Expected Sample Rate: <Run Text="{x:Bind ViewModel.ExpectedRpcCallbackRate, Mode=OneWay}"/> - </TextBlock> - <TextBlock Margin="0,10,0,0"> - Actual Sample Rate: <Run Text="{x:Bind ViewModel.ActualRpcCallbackRate, Mode=OneWay}"/> - </TextBlock> - </StackPanel> - <TextBlock FontWeight="Bold" Margin="0,10,0,0" Text="Samples:"/> - </StackPanel> - <ScrollViewer Grid.Row="2" HorizontalAlignment="Stretch" Margin="0,10,0,0" VerticalAlignment="Stretch"> - <TextBox Height="400" IsReadOnly="true" HorizontalAlignment="Stretch" Text="{x:Bind ViewModel.SampleMessage, Mode=OneWay}" BorderThickness="0"/> - </ScrollViewer> - </Grid> - </ScrollViewer> -</Page> diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/Scenario1_MeteringData.xaml.cpp b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/Scenario1_MeteringData.xaml.cpp deleted file mode 100644 index 3a9e1f48..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/Scenario1_MeteringData.xaml.cpp +++ /dev/null @@ -1,47 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -#include "pch.h" -#include "Scenario1_MeteringData.xaml.h" - -using namespace SDKTemplate; - -using namespace Platform; -using namespace Windows::Foundation; -using namespace Windows::Foundation::Collections; -using namespace Windows::UI::Xaml; -using namespace Windows::UI::Xaml::Controls::Primitives; - -MeteringData::MeteringData() -{ - InitializeComponent(); - ViewModel = ref new ServiceViewModel(); -} - -void SDKTemplate::MeteringData::button_Click_StartMetering(Object^ sender, RoutedEventArgs^ e) -{ - ViewModel->StartMetering((int)SamplePeriodSlider->Value); -} - -void SDKTemplate::MeteringData::button_Click_StopMetering(Object^ sender, RoutedEventArgs^ e) -{ - ViewModel->StopMetering(); -} - -void SDKTemplate::MeteringData::slider_ValueChanged(Object^ sender, RangeBaseValueChangedEventArgs^ e) -{ - // Ignore slider value changes prior to ViewModel initialization. - if (ViewModel != nullptr) - { - // Update the sample period in response to slider change. - ViewModel->SetSamplePeriod((int)SamplePeriodSlider->Value); - } -} diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/Scenario1_MeteringData.xaml.h b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/Scenario1_MeteringData.xaml.h deleted file mode 100644 index 79faa4f3..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/Scenario1_MeteringData.xaml.h +++ /dev/null @@ -1,31 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -#pragma once - -#include "Scenario1_MeteringData.g.h" -#include "ServiceViewModel.h" - -namespace SDKTemplate -{ - [Windows::Foundation::Metadata::WebHostHidden] - public ref class MeteringData sealed - { - public: - MeteringData(); - property ServiceViewModel^ ViewModel; - - private: - void button_Click_StartMetering(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); - void button_Click_StopMetering(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); - void slider_ValueChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventArgs^ e); - }; -} diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/ServiceViewModel.cpp b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/ServiceViewModel.cpp deleted file mode 100644 index 9f9674c4..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/ServiceViewModel.cpp +++ /dev/null @@ -1,282 +0,0 @@ -#include "pch.h" -#include "ServiceViewModel.h" -#include "MainPage.xaml.h" - -using namespace Concurrency; -using namespace Platform; -using namespace SDKTemplate; -using namespace Windows::System::Threading; -using namespace Windows::UI::Xaml::Data; - -ServiceViewModel::ServiceViewModel() -{ - // Set default rate - samplePeriod = 100; - - // Initialize UI state - startButtonEnabled = true; - stopButtonEnabled = false; - sliderEnabled = true; - sliderValue = samplePeriod; - actualRpcCallbackRate = "0"; - expectedRpcCallbackRate = "0"; - - meteringOn = false; - - // Get the dispatcher for notifying property change - dispatcher = Windows::UI::Core::CoreWindow::GetForCurrentThread()->Dispatcher; - - sampleArray = ref new Platform::Array<__int64>(1000); -} - -// -// if errCode represents an error, then display a message and return true. -// -inline bool ServiceViewModel::NotifyIfAnyError(__int64 errCode) -{ - if (errCode != 0) - { - meteringOn = false; - NotifyStatusMessage("Error occured while communicating with RPC server: " + errCode.ToString(), NotifyType::ErrorMessage); - - // Reset button state - StartButtonEnabled = true; - StopButtonEnabled = false; - return true; - } - return false; -} - -// Bindable properties -#pragma region BindableProperties - -String^ ServiceViewModel::ExpectedRpcCallbackRate::get() { return expectedRpcCallbackRate; } -void ServiceViewModel::ExpectedRpcCallbackRate::set(String^ value) -{ - if (expectedRpcCallbackRate != value) - { - expectedRpcCallbackRate = value; - NotifyPropertyChanged("ExpectedRpcCallbackRate"); - } -} - -String^ ServiceViewModel::ActualRpcCallbackRate::get() { return actualRpcCallbackRate; } -void ServiceViewModel::ActualRpcCallbackRate::set(String^ value) -{ - if (actualRpcCallbackRate != value) - { - actualRpcCallbackRate = value; - NotifyPropertyChanged("ActualRpcCallbackRate"); - } -} - -String^ ServiceViewModel::SampleMessage::get() { return sampleMessage; } -void ServiceViewModel::SampleMessage::set(String^ value) -{ - if (sampleMessage != value) - { - sampleMessage = value; - NotifyPropertyChanged("SampleMessage"); - } -} - -bool ServiceViewModel::StartButtonEnabled::get() { return startButtonEnabled; } -void ServiceViewModel::StartButtonEnabled::set(bool value) -{ - if (startButtonEnabled != value) - { - startButtonEnabled = value; - NotifyPropertyChanged("StartButtonEnabled"); - } -} - -bool ServiceViewModel::StopButtonEnabled::get() { return stopButtonEnabled; } -void ServiceViewModel::StopButtonEnabled::set(bool value) -{ - if (stopButtonEnabled != value) - { - stopButtonEnabled = value; - NotifyPropertyChanged("StopButtonEnabled"); - } -} - -bool ServiceViewModel::SliderEnabled::get() { return sliderEnabled; } -void ServiceViewModel::SliderEnabled::set(bool value) -{ - if (sliderEnabled != value) - { - sliderEnabled = value; - NotifyPropertyChanged("SliderEnabled"); - } -} - -double ServiceViewModel::SliderValue::get() { return sliderValue; } -void ServiceViewModel::SliderValue::set(double value) -{ - if (sliderValue != value) - { - sliderValue = value; - NotifyPropertyChanged("SliderValue"); - } -} -#pragma endregion BindableProperties - -void SDKTemplate::ServiceViewModel::NotifyPropertyChanged(Platform::String^ prop) -{ - if (dispatcher != nullptr) - { - dispatcher->RunAsync( - Windows::UI::Core::CoreDispatcherPriority::Normal, - ref new Windows::UI::Core::DispatchedHandler([this, prop]() - { - PropertyChangedEventArgs^ args = - ref new PropertyChangedEventArgs(prop); - PropertyChanged(this, args); - })); - } - // else log error -} - -// -// Initializes rpcclient and metering -// -void ServiceViewModel::StartMetering(int sampleRate) -{ - create_task([this, sampleRate] - { - SampleMessage = ""; - StartButtonEnabled = false; - StopButtonEnabled = true; - stopMeteringRequested = false; - - rpcclient = std::make_unique<RpcClient>(); - if (NotifyIfAnyError(rpcclient->Initialize())) return; - - meteringOn = true; - sampleRefreshCount = 0; - sampleArray[0] = 0; - - // Set the sample rate on server - this->samplePeriod = sampleRate; - __int64 retCode = rpcclient->SetSampleRate(sampleRate); - - FILETIME initialSystemTime; - GetSystemTimeAsFileTime(&initialSystemTime); - lastUpdateTime.LowPart = initialSystemTime.dwLowDateTime; - lastUpdateTime.HighPart = initialSystemTime.dwHighDateTime; - - if (!NotifyIfAnyError(retCode)) - { - // Set up worker for UI update. - Windows::Foundation::TimeSpan span{ 100 * 10000 }; // 100ms refresh rate - - auto timerHandler = ref new TimerElapsedHandler([this](ThreadPoolTimer^) - { - __int64 meteringData = rpcclient->MeteringData; - - // If there is no new data, return - if (sampleArray[0] == meteringData) - { - return; - } - - // Arithmetic subtraction of time - // https://msdn.microsoft.com/en-us/library/ms724950%28VS.85%29.aspx?f=255&MSPPError=-2147217396 - FILETIME currentSystemTime; - ULARGE_INTEGER currentTimeUi; - GetSystemTimeAsFileTime(¤tSystemTime); - currentTimeUi.LowPart = currentSystemTime.dwLowDateTime; - currentTimeUi.HighPart = currentSystemTime.dwHighDateTime; - - // Calculate number of samples received since last callback - __int64 now = rpcclient->CallbackCount; - __int64 diff = now - rpcDataCountOld; - rpcDataCountOld = now; - - // Calculate incoming sample rate - double rate = (double)diff*1E7 / (currentTimeUi.QuadPart - lastUpdateTime.QuadPart); - ExpectedRpcCallbackRate = (1E3 / this->samplePeriod).ToString() + " /sec"; - lastUpdateTime = currentTimeUi; - - ActualRpcCallbackRate = rate.ToString() + " /sec"; - - // Construct the sample data string - String^ sampleMessage = meteringData + "\n"; - unsigned int length = sampleArray->Length; - if (sampleRefreshCount < length) - { - ++sampleRefreshCount; - length = sampleRefreshCount; - } - - // Insert the new data point at the top of the array. - // Old data falls off the end of the array. - for (unsigned int i = 1; i < length; ++i) - { - sampleArray[i] = sampleArray[i - 1]; - sampleMessage += sampleArray[i] + "\n"; - } - sampleArray[0] = meteringData; - - SampleMessage = sampleMessage; - }); - - ThreadPoolTimer^ periodicTimer = ThreadPoolTimer::CreatePeriodicTimer(timerHandler, span); - NotifyStatusMessage("Metering start command sent successfully", NotifyType::StatusMessage); - retCode = this->rpcclient->StartMeteringAndWaitForStop(sampleRate); - meteringOn = false; - periodicTimer->Cancel(); - if (!NotifyIfAnyError(retCode) && !stopMeteringRequested) - { - NotifyStatusMessage("Rpc server connection closed without stop metering being requested", - NotifyType::ErrorMessage); - StartButtonEnabled = true; - StopButtonEnabled = false; - } - } - }); -} - -// -// Stop metering -// -void ServiceViewModel::StopMetering() -{ - create_task([this] - { - StopButtonEnabled = false; - SliderEnabled = false; - stopMeteringRequested = true; - - __int64 retCode = this->rpcclient->StopMetering(); - if (!NotifyIfAnyError(retCode)) - { - NotifyStatusMessage("Metering stop command sent successfully", - NotifyType::StatusMessage); - } - - SliderEnabled = true; - StartButtonEnabled = true; - }); -} - -// -// Set sample period -// -void ServiceViewModel::SetSamplePeriod(int samplePeriod) -{ - create_task([this, samplePeriod] - { - this->samplePeriod = samplePeriod; - if (meteringOn) - { - _int64 retCode = rpcclient->SetSampleRate(samplePeriod); - if (!NotifyIfAnyError(retCode)) - { - NotifyStatusMessage( - "Sample period set to: " + samplePeriod, - NotifyType::StatusMessage); - } - } - }); -}
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/ServiceViewModel.h b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/ServiceViewModel.h deleted file mode 100644 index c2fcad0c..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/ServiceViewModel.h +++ /dev/null @@ -1,77 +0,0 @@ -#pragma once - -#include "RpcClient.h" -#include <memory> - -namespace SDKTemplate -{ - [Windows::UI::Xaml::Data::Bindable] - public ref class ServiceViewModel sealed : Windows::UI::Xaml::Data::INotifyPropertyChanged - { - public: - ServiceViewModel(); - void StartMetering(int sampleRate); - void SetSamplePeriod(int rate); - void StopMetering(); - property Platform::String^ ExpectedRpcCallbackRate - { - Platform::String^ get(); - void set(Platform::String^ value); - } - property Platform::String^ ActualRpcCallbackRate - { - Platform::String^ get(); - void set(Platform::String^ value); - } - property Platform::String^ SampleMessage - { - Platform::String^ get(); - void set(Platform::String^ value); - } - property bool StartButtonEnabled - { - bool get(); - void set(bool value); - } - property bool StopButtonEnabled - { - bool get(); - void set(bool value); - } - property bool SliderEnabled - { - bool get(); - void set(bool value); - } - property double SliderValue - { - double get(); - void set(double value); - } - virtual event Windows::UI::Xaml::Data::PropertyChangedEventHandler^ PropertyChanged; - - private: - volatile bool meteringOn; - Windows::UI::Core::ICoreDispatcher^ dispatcher; - int samplePeriod; - ULARGE_INTEGER lastUpdateTime; - __int64 rpcDataCountOld = 0; - unsigned int sampleRefreshCount = 0; - std::unique_ptr<RpcClient> rpcclient; - bool stopMeteringRequested; - bool NotifyIfAnyError(__int64 errCode); - - // Variables backing UI bindings - Platform::String^ sampleMessage; - Platform::String^ expectedRpcCallbackRate; - Platform::String^ actualRpcCallbackRate; - bool startButtonEnabled; - bool stopButtonEnabled; - bool sliderEnabled; - double sliderValue; - - void NotifyPropertyChanged(Platform::String^ prop); - - Platform::Array<__int64>^ sampleArray; - }; -} diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/pch.cpp b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/pch.cpp deleted file mode 100644 index b300c4c0..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/pch.cpp +++ /dev/null @@ -1,60 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -// -// pch.cpp -// Include the standard header and generate the precompiled header. -// - -#include "pch.h" -#include "MainPage.xaml.h" - -#include <robuffer.h> -#include <wrl\client.h> - -using namespace Microsoft::WRL; -using namespace Windows::Storage::Streams; - -byte* GetArrayFromBuffer(Windows::Storage::Streams::IBuffer^ buffer) -{ - ComPtr<IInspectable> base = reinterpret_cast<IInspectable*>(buffer); - ComPtr<IBufferByteAccess> access; - - auto hr = base.As(&access); - - if (FAILED(hr)) - { - throw Platform::Exception::CreateException(hr); - } - - byte* data; - - hr = access->Buffer(&data); - - if (FAILED(hr)) - { - throw Platform::Exception::CreateException(hr); - } - - // The returned buffer is valid as long as the IBuffer passed in - // remains valid. - return data; -} - -void NotifyStatusMessage(Platform::String^ message, SDKTemplate::NotifyType messageType) -{ - SDKTemplate::MainPage::Current->Dispatcher->RunAsync( - Windows::UI::Core::CoreDispatcherPriority::Normal, - ref new Windows::UI::Core::DispatchedHandler( - [message, messageType]() { - SDKTemplate::MainPage::Current->NotifyUser(message, messageType); - })); -} diff --git a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/pch.h b/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/pch.h deleted file mode 100644 index 3cec6ca5..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/App/CustomCapability/cpp/pch.h +++ /dev/null @@ -1,27 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -// -// pch.h -// Header for standard system include files. -// - -#pragma once - -#include <collection.h> -#include <ppltasks.h> - -#include "App.xaml.h" -#include "MainPage.xaml.h" - -byte* GetArrayFromBuffer(Windows::Storage::Streams::IBuffer^ buffer); - -void NotifyStatusMessage(Platform::String^ message, SDKTemplate::NotifyType messageType); diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/App.xaml.cpp b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/App.xaml.cpp deleted file mode 100644 index 1abebcb3..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/App.xaml.cpp +++ /dev/null @@ -1,134 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -#include "pch.h" -#include "MainPage.xaml.h" - -using namespace SDKTemplate; - -using namespace Platform; -using namespace Windows::ApplicationModel; -using namespace Windows::ApplicationModel::Activation; -using namespace Windows::Foundation; -using namespace Windows::Foundation::Collections; -using namespace Windows::UI::Xaml; -using namespace Windows::UI::Xaml::Controls; -using namespace Windows::UI::Xaml::Controls::Primitives; -using namespace Windows::UI::Xaml::Data; -using namespace Windows::UI::Xaml::Input; -using namespace Windows::UI::Xaml::Interop; -using namespace Windows::UI::Xaml::Media; -using namespace Windows::UI::Xaml::Navigation; - -// The Blank Application template is documented at http://go.microsoft.com/fwlink/?LinkId=402347&clcid=0x409 - -// These placeholder functions are used if the sample does not -// implement the corresponding methods. This allows us to simulate -// C# partial methods in C++. - -static void Partial_Construct() { } - -/// <summary> -/// Initializes the singleton application object. This is the first line of authored code -/// executed, and as such is the logical equivalent of main() or WinMain(). -/// </summary> -App::App() -{ - InitializeComponent(); - Partial_Construct(); - Suspending += ref new Windows::UI::Xaml::SuspendingEventHandler(this, &SDKTemplate::App::OnSuspending); -} - -/// <summary> -/// Invoked when the application is launched normally by the end user. Other entry points -/// will be used such as when the application is launched to open a specific file. -/// </summary> -/// <param name="e">Details about the launch request and process.</param> -void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ e) -{ -#if _DEBUG - // Show graphics profiling information while debugging. - if (IsDebuggerPresent()) - { - // Display the current frame rate counters - DebugSettings->EnableFrameRateCounter = false; - } -#endif - - auto rootFrame = dynamic_cast<Frame^>(Window::Current->Content); - - // Do not repeat app initialization when the Window already has content, - // just ensure that the window is active - if (rootFrame == nullptr) - { - // Create a Frame to act as the navigation context and associate it with - // a SuspensionManager key - rootFrame = ref new Frame(); - - // Set the default language - rootFrame->Language = Windows::Globalization::ApplicationLanguages::Languages->GetAt(0); - - rootFrame->NavigationFailed += ref new Windows::UI::Xaml::Navigation::NavigationFailedEventHandler(this, &App::OnNavigationFailed); - - if (e->PreviousExecutionState == ApplicationExecutionState::Terminated) - { - // TODO: Restore the saved session state only when appropriate, scheduling the - // final launch steps after the restore is complete - } - - if (rootFrame->Content == nullptr) - { - // When the navigation stack isn't restored navigate to the first page, - // configuring the new page by passing required information as a navigation - // parameter - rootFrame->Navigate(TypeName(MainPage::typeid), e->Arguments); - } - // Place the frame in the current Window - Window::Current->Content = rootFrame; - // Ensure the current window is active - Window::Current->Activate(); - } - else - { - if (rootFrame->Content == nullptr) - { - // When the navigation stack isn't restored navigate to the first page, - // configuring the new page by passing required information as a navigation - // parameter - rootFrame->Navigate(TypeName(MainPage::typeid), e->Arguments); - } - // Ensure the current window is active - Window::Current->Activate(); - } -} - -/// <summary> -/// Invoked when application execution is being suspended. Application state is saved -/// without knowing whether the application will be terminated or resumed with the contents -/// of memory still intact. -/// </summary> -/// <param name="sender">The source of the suspend request.</param> -/// <param name="e">Details about the suspend request.</param> -void App::OnSuspending(Object^ /* sender */, SuspendingEventArgs^ /* e */) -{ - //TODO: Save application state and stop any background activity -} - - -/// <summary> -/// Invoked when Navigation to a certain page fails -/// </summary> -/// <param name="sender">The Frame which failed navigation</param> -/// <param name="e">Details about the navigation failure</param> -void App::OnNavigationFailed(Platform::Object ^sender, Windows::UI::Xaml::Navigation::NavigationFailedEventArgs ^e) -{ - throw ref new FailureException("Failed to load Page " + e->SourcePageType.Name); -}
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/App.xaml.h b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/App.xaml.h deleted file mode 100644 index e7bd715a..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/App.xaml.h +++ /dev/null @@ -1,33 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -#pragma once - -#include "App.g.h" - -namespace SDKTemplate -{ - /// <summary> - /// Provides application-specific behavior to supplement the default Application class. - /// </summary> - ref class App sealed - { - protected: - virtual void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ e) override; - - internal: - App(); - - private: - void OnSuspending(Platform::Object^ sender, Windows::ApplicationModel::SuspendingEventArgs^ e); - void OnNavigationFailed(Platform::Object ^sender, Windows::UI::Xaml::Navigation::NavigationFailedEventArgs ^e); - }; -} diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/DeviceHelpers.h b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/DeviceHelpers.h deleted file mode 100644 index c2fa82b2..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/DeviceHelpers.h +++ /dev/null @@ -1,67 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -#pragma once - -namespace SDKTemplate -{ - namespace DeviceHelpers - { - // We use a DeviceWatcher instead of DeviceInformation.FindAllAsync because - // the DeviceWatcher will let us see the devices as they are discovered, - // whereas FindAllAsync returns results only after discovery is complete. - // - // The convertAsync functional is passed a device ID (Platform::String^) and returns a - // Concurrency::task<Something^>. - template<typename Converter> - auto GetFirstDeviceAsync(Platform::String^ selector, Converter convertAsync) - -> decltype(convertAsync(nullptr)) - { - using T = typename decltype(convertAsync(nullptr))::result_type; - Concurrency::task_completion_event<T> completionEvent; - auto pendingTasks = std::make_shared<std::vector<Concurrency::task<void>>>(); - Windows::Devices::Enumeration::DeviceWatcher^ watcher = Windows::Devices::Enumeration::DeviceInformation::CreateWatcher(selector); - - watcher->Added += ref new Windows::Foundation::TypedEventHandler<Windows::Devices::Enumeration::DeviceWatcher^, Windows::Devices::Enumeration::DeviceInformation^>( - [completionEvent, pendingTasks, convertAsync](Windows::Devices::Enumeration::DeviceWatcher^ sender, Windows::Devices::Enumeration::DeviceInformation^ device) - { - auto task = convertAsync(device->Id).then([completionEvent](T t) - { - if (t != nullptr) - { - completionEvent.set(t); - } - }); - pendingTasks->push_back(task); - }); - - watcher->EnumerationCompleted += ref new Windows::Foundation::TypedEventHandler<Windows::Devices::Enumeration::DeviceWatcher^, Platform::Object^>( - [completionEvent, pendingTasks](Windows::Devices::Enumeration::DeviceWatcher^ sender, Platform::Object^ args) - { - // Wait for completion of all the tasks we created in our "Added" event handler. - Concurrency::when_all(pendingTasks->begin(), pendingTasks->end()).then([completionEvent]() - { - // This sets the result to "nullptr" if no task was able to produce a device. - completionEvent.set(nullptr); - }); - }); - - watcher->Start(); - - // Wait for enumeration to complete or for a device to be found, whichever comes first. - return Concurrency::create_task(completionEvent).then([watcher](T result) - { - watcher->Stop(); - return result; - }); - } - } -} diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/MainPage.xaml b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/MainPage.xaml deleted file mode 100644 index 5179f520..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/MainPage.xaml +++ /dev/null @@ -1,80 +0,0 @@ -<!-- -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* ---> - -<Page - x:Class="SDKTemplate.MainPage" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:local="using:SDKTemplate" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - mc:Ignorable="d"> - - <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> - <Grid.RowDefinitions> - <RowDefinition Height="Auto"/> - <RowDefinition Height="*"/> - </Grid.RowDefinitions> - <SplitView x:Name="Splitter" IsPaneOpen="True" Grid.Row="1" DisplayMode="Inline"> - <SplitView.Pane> - <RelativePanel Margin="10,0,0,0"> - <TextBlock x:Name="SampleTitle" Text="Sample Title Here" Style="{StaticResource SampleHeaderTextStyle}" TextWrapping="Wrap" Margin="0,10,0,0"/> - <ListBox x:Name="ScenarioControl" SelectionChanged="ScenarioControl_SelectionChanged" - SelectionMode="Single" HorizontalAlignment="Left" Background="Transparent" BorderThickness="0" - VerticalAlignment="Top" RelativePanel.Below="SampleTitle" Margin="0,10,0,0" RelativePanel.Above="FooterPanel"> - <ListBox.ItemTemplate> - <DataTemplate> - <TextBlock Text="{Binding Converter={StaticResource ScenarioConverter}}"/> - </DataTemplate> - </ListBox.ItemTemplate> - </ListBox> - <StackPanel x:Name="FooterPanel" Orientation="Vertical" RelativePanel.AlignBottomWithPanel="True"> - <Image Source="Assets/microsoft-sdk.png" AutomationProperties.Name="Microsoft Logo" Stretch="None" HorizontalAlignment="Left" Margin="10,0,0,0"/> - <TextBlock x:Name="Copyright" Text="© Microsoft Corporation. All rights reserved." Style="{StaticResource CopyrightTextStyle}" - RelativePanel.Above="LinksPanel" Margin="10,10,0,0" - TextWrapping="Wrap"/> - <StackPanel x:Name="LinksPanel" Orientation="Horizontal" Margin="10,10,0,10"> - <HyperlinkButton Content="Trademarks" Tag="http://go.microsoft.com/fwlink/?LinkID=623755" - Click="Footer_Click" FontSize="12" Style="{StaticResource HyperlinkStyle}" /> - <TextBlock Text="|" Style="{StaticResource SeparatorStyle}" VerticalAlignment="Center" /> - <HyperlinkButton x:Name="PrivacyLink" Content="Privacy" Tag="http://privacy.microsoft.com" Click="Footer_Click" FontSize="12" Style="{StaticResource HyperlinkStyle}"/> - </StackPanel> - </StackPanel> - </RelativePanel> - </SplitView.Pane> - <RelativePanel> - <Frame x:Name="ScenarioFrame" Margin="0,5,0,0" RelativePanel.AlignTopWithPanel="True" RelativePanel.Above="StatusPanel" RelativePanel.AlignRightWithPanel="True" RelativePanel.AlignLeftWithPanel="True"/> - <StackPanel x:Name="StatusPanel" Orientation="Vertical" RelativePanel.AlignBottomWithPanel="True" RelativePanel.AlignRightWithPanel="True" RelativePanel.AlignLeftWithPanel="True"> - <TextBlock x:Name="StatusLabel" Margin="0,0,0,10" TextWrapping="Wrap" Text="Status:" /> - <Border x:Name="StatusBorder" Margin="0,0,0,0" Visibility="Visible" > - <ScrollViewer VerticalScrollMode="Auto" VerticalScrollBarVisibility="Auto" MaxHeight="200"> - <TextBlock x:Name="StatusBlock" FontWeight="Bold" - MaxWidth="{Binding ElementName=Splitter, Path=ActualWidth}" Margin="10,10,10,20" TextWrapping="Wrap" /> - </ScrollViewer> - </Border> - </StackPanel> - </RelativePanel> - </SplitView> - <StackPanel x:Name="HeaderPanel" Orientation="Horizontal"> - <Border Background="{ThemeResource SystemControlBackgroundChromeMediumBrush}" Grid.Row="0"> - <ToggleButton Style="{StaticResource SymbolButton}" Click="Button_Click" VerticalAlignment="Top" Foreground="{ThemeResource ApplicationForegroundThemeBrush}"> - <ToggleButton.Content> - <FontIcon x:Name="Hamburger" FontFamily="Segoe MDL2 Assets" Glyph="" Margin="0,10,0,0"/> - </ToggleButton.Content> - </ToggleButton> - </Border> - <Image x:Name="WindowsLogo" Stretch="None" Source="Assets/windows-sdk.png" Margin="0,15,0,0" /> - <TextBlock x:Name="Header" Text="Universal Windows Platform sample" Style="{StaticResource TagLineTextStyle}" Margin="0,15,0,0" /> - </StackPanel> - </Grid> -</Page> diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/MainPage.xaml.cpp b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/MainPage.xaml.cpp deleted file mode 100644 index 24c12f68..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/MainPage.xaml.cpp +++ /dev/null @@ -1,154 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -#include "pch.h" -#include "MainPage.xaml.h" - -using namespace SDKTemplate; -using namespace Platform; -using namespace Windows::Foundation; -using namespace Windows::Foundation::Collections; -using namespace Windows::UI::Core; -using namespace Windows::UI::Xaml; -using namespace Windows::UI::Xaml::Controls; -using namespace Windows::UI::Xaml::Controls::Primitives; -using namespace Windows::UI::Xaml::Data; -using namespace Windows::UI::Xaml::Input; -using namespace Windows::UI::Xaml::Media; -using namespace Windows::UI::Xaml::Navigation; -using namespace Windows::UI::Xaml::Interop; - -// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 - -MainPage^ MainPage::Current = nullptr; - -MainPage::MainPage() -{ - InitializeComponent(); - SampleTitle->Text = FEATURE_NAME; - - // This is a static public property that allows downstream pages to get a handle to the MainPage instance - // in order to call methods that are in this class. - MainPage::Current = this; -} - -void MainPage::OnNavigatedTo(NavigationEventArgs^ e) -{ - // Populate the ListBox with the scenarios as defined in SampleConfiguration.cpp. - auto itemCollection = ref new Platform::Collections::Vector<Object^>(); - int i = 1; - for (auto const& s : MainPage::Current->scenarios) - { - // Create a textBlock to hold the content and apply the ListItemTextStyle from Styles.xaml - TextBlock^ textBlock = ref new TextBlock(); - ListBoxItem^ item = ref new ListBoxItem(); - auto style = App::Current->Resources->Lookup("ListItemTextStyle"); - - textBlock->Text = (i++).ToString() + ") " + s.Title; - textBlock->Style = safe_cast<Windows::UI::Xaml::Style ^>(style); - - item->Name = s.ClassName; - item->Content = textBlock; - itemCollection->Append(item); - } - - // Set the newly created itemCollection as the ListBox ItemSource. - ScenarioControl->ItemsSource = itemCollection; - int startingScenarioIndex; - - if (Window::Current->Bounds.Width < 640) - { - startingScenarioIndex = -1; - } - else - { - startingScenarioIndex = 0; - } - - ScenarioControl->SelectedIndex = startingScenarioIndex; - ScenarioControl->ScrollIntoView(ScenarioControl->SelectedItem); -} - - -void MainPage::ScenarioControl_SelectionChanged(Object^ sender, SelectionChangedEventArgs^ e) -{ - ListBox^ scenarioListBox = safe_cast<ListBox^>(sender); //as ListBox; - ListBoxItem^ item = dynamic_cast<ListBoxItem^>(scenarioListBox->SelectedItem); - if (item != nullptr) - { - // Clear the status block when changing scenarios - NotifyUser("", NotifyType::StatusMessage); - - // Navigate to the selected scenario. - TypeName scenarioType = { item->Name, TypeKind::Custom }; - ScenarioFrame->Navigate(scenarioType, this); - - if (Window::Current->Bounds.Width < 640) - { - Splitter->IsPaneOpen = false; - } - } -} - -void MainPage::NotifyUser(String^ strMessage, NotifyType type) -{ - if (Dispatcher->HasThreadAccess) - { - UpdateStatus(strMessage, type); - } - else - { - Dispatcher->RunAsync(CoreDispatcherPriority::Normal, ref new DispatchedHandler([strMessage, type, this]() - { - UpdateStatus(strMessage, type); - })); - } -} - -void MainPage::UpdateStatus(String^ strMessage, NotifyType type) -{ - switch (type) - { - case NotifyType::StatusMessage: - StatusBorder->Background = ref new SolidColorBrush(Windows::UI::Colors::Green); - break; - case NotifyType::ErrorMessage: - StatusBorder->Background = ref new SolidColorBrush(Windows::UI::Colors::Red); - break; - default: - break; - } - - StatusBlock->Text = strMessage; - - // Collapse the StatusBlock if it has no text to conserve real estate. - if (StatusBlock->Text != "") - { - StatusBorder->Visibility = Windows::UI::Xaml::Visibility::Visible; - StatusPanel->Visibility = Windows::UI::Xaml::Visibility::Visible; - } - else - { - StatusBorder->Visibility = Windows::UI::Xaml::Visibility::Collapsed; - StatusPanel->Visibility = Windows::UI::Xaml::Visibility::Collapsed; - } -} - -void MainPage::Footer_Click(Object^ sender, RoutedEventArgs^ e) -{ - auto uri = ref new Uri((String^)((HyperlinkButton^)sender)->Tag); - Windows::System::Launcher::LaunchUriAsync(uri); -} - -void MainPage::Button_Click(Object^ sender, RoutedEventArgs^ e) -{ - Splitter->IsPaneOpen = !Splitter->IsPaneOpen; -}
\ No newline at end of file diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/MainPage.xaml.h b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/MainPage.xaml.h deleted file mode 100644 index e87e24f0..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/cpp/MainPage.xaml.h +++ /dev/null @@ -1,46 +0,0 @@ -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* - -#pragma once - -#include "MainPage.g.h" -#include "SampleConfiguration.h" - -namespace SDKTemplate -{ - public enum class NotifyType - { - StatusMessage, - ErrorMessage - }; - - /// <summary> - /// An empty page that can be used on its own or navigated to within a Frame. - /// </summary> - public ref class MainPage sealed - { - public: - MainPage(); - - protected: - virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override; - - private: - void ScenarioControl_SelectionChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ e); - void Footer_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); - void Button_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); - void UpdateStatus(Platform::String^ strMessage, NotifyType type); - - internal: - static MainPage^ Current; - void NotifyUser(Platform::String^ strMessage, NotifyType type); - }; -} diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/Square310x310Logo.png b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/Square310x310Logo.png Binary files differdeleted file mode 100644 index c96f294a..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/Square310x310Logo.png +++ /dev/null diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/microsoft-sdk.png b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/microsoft-sdk.png Binary files differdeleted file mode 100644 index 380a0102..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/microsoft-sdk.png +++ /dev/null diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/placeholder-sdk.png b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/placeholder-sdk.png Binary files differdeleted file mode 100644 index 01b3138c..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/placeholder-sdk.png +++ /dev/null diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/placeholder.png b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/placeholder.png Binary files differdeleted file mode 100644 index e2d83818..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/placeholder.png +++ /dev/null diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/smalltile-sdk.png b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/smalltile-sdk.png Binary files differdeleted file mode 100644 index ba9a0cde..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/smalltile-sdk.png +++ /dev/null diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/splash-sdk.png b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/splash-sdk.png Binary files differdeleted file mode 100644 index e00df02c..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/splash-sdk.png +++ /dev/null diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/squaretile-sdk.png b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/squaretile-sdk.png Binary files differdeleted file mode 100644 index f97c34a9..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/squaretile-sdk.png +++ /dev/null diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/storelogo-sdk.png b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/storelogo-sdk.png Binary files differdeleted file mode 100644 index 5c397dea..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/storelogo-sdk.png +++ /dev/null diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/tile-sdk.png b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/tile-sdk.png Binary files differdeleted file mode 100644 index f72683f2..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/tile-sdk.png +++ /dev/null diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/windows-sdk.png b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/windows-sdk.png Binary files differdeleted file mode 100644 index 67268021..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/media/windows-sdk.png +++ /dev/null diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/xaml/App.xaml b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/xaml/App.xaml deleted file mode 100644 index 63e80b83..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/xaml/App.xaml +++ /dev/null @@ -1,34 +0,0 @@ -<!-- -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* ---> -<Application - x:Class="SDKTemplate.App" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:local="using:SDKTemplate" - RequestedTheme="Dark"> - - <Application.Resources> - <!-- Application-specific resources --> - <ResourceDictionary> - <ResourceDictionary.MergedDictionaries> - - <!-- - Styles that define common aspects of the platform look and feel - Required by Visual Studio project and item templates - --> - <ResourceDictionary Source="/Styles/Styles.xaml"/> - </ResourceDictionary.MergedDictionaries> - </ResourceDictionary> - </Application.Resources> - -</Application> diff --git a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/xaml/Styles.xaml b/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/xaml/Styles.xaml deleted file mode 100644 index 50602ae5..00000000 --- a/general/WinHEC 2017 Lab/Toaster Support App/SharedContent/xaml/Styles.xaml +++ /dev/null @@ -1,536 +0,0 @@ -<!-- -//********************************************************* -// -// Copyright (c) Microsoft. All rights reserved. -// This code is licensed under the MIT License (MIT). -// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF -// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY -// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR -// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. -// -//********************************************************* ---> -<ResourceDictionary - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:local="using:SDKTemplate"> - - <Style x:Key="SymbolButton" TargetType="ToggleButton"> - <Setter Property="FontSize" Value="16" /> - <Setter Property="FontFamily" Value="{StaticResource SymbolThemeFontFamily}" /> - <Setter Property="MinHeight" Value="48" /> - <Setter Property="MinWidth" Value="48" /> - <Setter Property="Margin" Value="0,4,0,0" /> - <Setter Property="Padding" Value="0" /> - <Setter Property="HorizontalAlignment" Value="Left" /> - <Setter Property="VerticalAlignment" Value="Top" /> - <Setter Property="HorizontalContentAlignment" Value="Center" /> - <Setter Property="VerticalContentAlignment" Value="Center" /> - <Setter Property="Background" Value="Transparent" /> - <Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" /> - <Setter Property="Content" Value="" /> - <Setter Property="AutomationProperties.Name" Value="Menu" /> - <Setter Property="UseSystemFocusVisuals" Value="True" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="ToggleButton"> - <Grid x:Name="LayoutRoot" - Background="{TemplateBinding Background}"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="PointerOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot" Storyboard.TargetProperty="(Grid.Background)"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListLowBrush}"/> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltBaseHighBrush}"/> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot" Storyboard.TargetProperty="(Grid.Background)"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListMediumBrush}"/> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltBaseHighBrush}"/> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="(TextBlock.Foreground)"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseLowBrush}"/> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Checked"/> - <VisualState x:Name="CheckedPointerOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot" Storyboard.TargetProperty="(Grid.Background)"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListLowBrush}"/> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltBaseHighBrush}"/> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="CheckedPressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot" Storyboard.TargetProperty="(Grid.Background)"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListMediumBrush}"/> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltBaseHighBrush}"/> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="CheckedDisabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="(TextBlock.Foreground)"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseLowBrush}"/> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <ContentPresenter x:Name="ContentPresenter" - Content="{TemplateBinding Content}" - Margin="{TemplateBinding Padding}" - HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" - VerticalAlignment="{TemplateBinding VerticalContentAlignment}" - AutomationProperties.AccessibilityView="Raw" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <Style x:Key="BasicTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BodyTextBlockStyle}"> - <Setter Property="Margin" Value="0,0,0,12"/> - </Style> - - <Style x:Key="TagLineTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BodyTextBlockStyle}"> - </Style> - - <Style x:Key="SampleHeaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource TitleTextBlockStyle}"> - <Setter Property="FontSize" Value="28"/> - </Style> - - <Style x:Key="ListItemTextStyle" TargetType="TextBlock" BasedOn="{StaticResource SubtitleTextBlockStyle}"> - <Setter Property="FontSize" Value="18"/> - <Setter Property="Margin" Value="10,0,0,0"/> - <Setter Property="Foreground" Value="{StaticResource SystemControlForegroundBaseHighBrush}"/> - </Style> - - <Style x:Key="CopyrightTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaseTextBlockStyle}"> - <Setter Property="FontWeight" Value="Normal"/> - </Style> - - <Style x:Key="ScenarioHeaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource TitleTextBlockStyle}"> - </Style> - - <Style x:Key="ScenarioDescriptionTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BodyTextBlockStyle}"> - </Style> - - <Style x:Key="BaseMessageStyle" TargetType="TextBlock" BasedOn="{StaticResource BodyTextBlockStyle}"> - <Setter Property="Margin" Value="0,0,0,5"/> - </Style> - - <Style x:Key="SeparatorStyle" TargetType="TextBlock" BasedOn="{StaticResource BaseTextBlockStyle}"> - <Setter Property="FontSize" Value="9"/> - <Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseMediumBrush}"/> - </Style> - - <Style x:Key="HyperlinkStyle" TargetType="HyperlinkButton"> - <Setter Property="Padding" Value="1"/> - <Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseMediumBrush}"/> - <Setter Property="FontSize" Value="12"/> - </Style> - - <Style x:Key="NavMenuItemContainerStyle" TargetType="ListViewItem"> - <Setter Property="MinWidth" Value="{StaticResource SplitViewCompactPaneThemeLength}"/> - <Setter Property="MinHeight" Value="48"/> - <Setter Property="Padding" Value="0"/> - <Setter Property="UseSystemFocusVisuals" Value="False" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="ListViewItem"> - <Grid x:Name="ContentBorder" - HorizontalAlignment="Stretch" - Control.IsTemplateFocusTarget="True" - Background="{TemplateBinding Background}" - BorderBrush="{TemplateBinding BorderBrush}" - BorderThickness="{TemplateBinding BorderThickness}" - RenderTransformOrigin="0.5,0.5"> - <Grid.RenderTransform> - <ScaleTransform x:Name="ContentBorderScale" /> - </Grid.RenderTransform> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal"> - <Storyboard> - <PointerUpThemeAnimation Storyboard.TargetName="ContentPresenter" /> - </Storyboard> - </VisualState> - <VisualState x:Name="PointerOver"> - <Storyboard> - <DoubleAnimation Storyboard.TargetName="BorderBackground" - Storyboard.TargetProperty="Opacity" - Duration="0" - To="1"/> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderBackground" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListLowBrush}" /> - </ObjectAnimationUsingKeyFrames> - <PointerUpThemeAnimation Storyboard.TargetName="ContentPresenter" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <DoubleAnimation Storyboard.TargetName="BorderBackground" - Storyboard.TargetProperty="Opacity" - Duration="0" - To="1"/> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderBackground" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListMediumBrush}" /> - </ObjectAnimationUsingKeyFrames> - <PointerDownThemeAnimation TargetName="ContentPresenter" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Selected"> - <Storyboard> - <DoubleAnimation Storyboard.TargetName="BorderBackground" - Storyboard.TargetProperty="Opacity" - Duration="0" - To="1"/> - <DoubleAnimation Storyboard.TargetName="SelectedPipe" - Storyboard.TargetProperty="Opacity" - Duration="0" - To="1"/> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderBackground" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlForegroundAccentBrush}" /> - </ObjectAnimationUsingKeyFrames> - <PointerUpThemeAnimation Storyboard.TargetName="ContentPresenter" /> - </Storyboard> - </VisualState> - <VisualState x:Name="PointerOverSelected"> - <Storyboard> - <DoubleAnimation Storyboard.TargetName="BorderBackground" - Storyboard.TargetProperty="Opacity" - Duration="0" - To="1"/> - <DoubleAnimation Storyboard.TargetName="SelectedPipe" - Storyboard.TargetProperty="Opacity" - Duration="0" - To="1"/> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderBackground" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListLowBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlForegroundAccentBrush}" /> - </ObjectAnimationUsingKeyFrames> - <PointerUpThemeAnimation Storyboard.TargetName="ContentPresenter" /> - </Storyboard> - </VisualState> - <VisualState x:Name="PressedSelected"> - <Storyboard> - <DoubleAnimation Storyboard.TargetName="BorderBackground" - Storyboard.TargetProperty="Opacity" - Duration="0" - To="1"/> - <DoubleAnimation Storyboard.TargetName="SelectedPipe" - Storyboard.TargetProperty="Opacity" - Duration="0" - To="1"/> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderBackground" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListMediumBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlForegroundAccentBrush}" /> - </ObjectAnimationUsingKeyFrames> - <PointerDownThemeAnimation TargetName="ContentPresenter" /> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="DisabledStates"> - <VisualState x:Name="Enabled"/> - <VisualState x:Name="Disabled"> - <Storyboard> - <DoubleAnimation Storyboard.TargetName="ContentBorder" - Storyboard.TargetProperty="Opacity" - Duration="0" - To="{ThemeResource ListViewItemDisabledThemeOpacity}"/> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Unfocused"/> - <VisualState x:Name="Focused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FocusBackground" Storyboard.TargetProperty="Fill"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListLowBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Rectangle x:Name="BorderBackground" - IsHitTestVisible="False" - Fill="Transparent" - Opacity="1" - Control.IsTemplateFocusTarget="True" /> - <Rectangle x:Name="FocusBackground" - IsHitTestVisible="False" - Fill="Transparent" - Opacity="1" - Control.IsTemplateFocusTarget="True"/> - <Rectangle x:Name="SelectedPipe" - Opacity="0" - Width="4" - Height="24" - Fill="{ThemeResource SystemControlForegroundAccentBrush}" - VerticalAlignment="Center" - HorizontalAlignment="Left"/> - <ContentPresenter x:Name="ContentPresenter" - ContentTransitions="{TemplateBinding ContentTransitions}" - ContentTemplate="{TemplateBinding ContentTemplate}" - Content="{TemplateBinding Content}" - HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" - VerticalAlignment="{TemplateBinding VerticalContentAlignment}" - Margin="16,0,0,0" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <!-- Default style for Windows.UI.Xaml.Controls.ListBoxItem --> - <Style x:Key="ListBoxItemStyle" TargetType="ListBoxItem"> - <Setter Property="Background" Value="Transparent" /> - <Setter Property="TabNavigation" Value="Local" /> - <Setter Property="Padding" Value="8,10" /> - <Setter Property="HorizontalContentAlignment" Value="Left" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="ListBoxItem"> - <Border x:Name="LayoutRoot" - Background="{TemplateBinding Background}" - BorderBrush="{TemplateBinding BorderBrush}" - BorderThickness="{TemplateBinding BorderThickness}"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal" /> - <VisualState x:Name="PointerOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot" - Storyboard.TargetProperty="Background"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListBoxItemPointerOverBackgroundThemeBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" - Storyboard.TargetProperty="Foreground"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListBoxItemPointerOverForegroundThemeBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot" - Storyboard.TargetProperty="Background"> - <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" - Storyboard.TargetProperty="Foreground"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListBoxItemDisabledForegroundThemeBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Pressed"> - <Storyboard> - <DoubleAnimation Storyboard.TargetName="PressedBackground" - Storyboard.TargetProperty="Opacity" - To="1" - Duration="0" /> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" - Storyboard.TargetProperty="Foreground"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListBoxItemPressedForegroundThemeBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="SelectionStates"> - <VisualState x:Name="Unselected" /> - <VisualState x:Name="Selected"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="InnerGrid" - Storyboard.TargetProperty="Background"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListBoxItemSelectedBackgroundThemeBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" - Storyboard.TargetProperty="Foreground"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListBoxItemSelectedForegroundThemeBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="SelectedUnfocused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="InnerGrid" - Storyboard.TargetProperty="Background"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListBoxItemSelectedBackgroundThemeBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" - Storyboard.TargetProperty="Foreground"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListBoxItemSelectedForegroundThemeBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="SelectedDisabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="InnerGrid" - Storyboard.TargetProperty="Background"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListBoxItemSelectedDisabledBackgroundThemeBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" - Storyboard.TargetProperty="Foreground"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListBoxItemSelectedDisabledForegroundThemeBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="SelectedPointerOver"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="InnerGrid" - Storyboard.TargetProperty="Background"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListBoxItemSelectedPointerOverBackgroundThemeBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" - Storyboard.TargetProperty="Foreground"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListBoxItemSelectedForegroundThemeBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="SelectedPressed"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="InnerGrid" - Storyboard.TargetProperty="Background"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListBoxItemSelectedBackgroundThemeBrush}" /> - </ObjectAnimationUsingKeyFrames> - <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" - Storyboard.TargetProperty="Foreground"> - <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ListBoxItemSelectedForegroundThemeBrush}" /> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <DoubleAnimation Storyboard.TargetName="FocusVisualWhite" - Storyboard.TargetProperty="Opacity" - To="1" - Duration="0" /> - <DoubleAnimation Storyboard.TargetName="FocusVisualBlack" - Storyboard.TargetProperty="Opacity" - To="1" - Duration="0" /> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused" /> - <VisualState x:Name="PointerFocused" /> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <Grid x:Name="InnerGrid" - Background="Transparent"> - <Rectangle x:Name="PressedBackground" - Fill="{ThemeResource ListBoxItemPressedBackgroundThemeBrush}" - Opacity="0" /> - <ContentPresenter x:Name="ContentPresenter" - Content="{TemplateBinding Content}" - ContentTransitions="{TemplateBinding ContentTransitions}" - ContentTemplate="{TemplateBinding ContentTemplate}" - HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" - VerticalAlignment="{TemplateBinding VerticalContentAlignment}" - Margin="{TemplateBinding Padding}" /> - <Rectangle x:Name="FocusVisualWhite" - Stroke="{ThemeResource FocusVisualWhiteStrokeThemeBrush}" - StrokeEndLineCap="Square" - StrokeDashArray="1,1" - Opacity="0" - StrokeDashOffset=".5" /> - <Rectangle x:Name="FocusVisualBlack" - Stroke="{ThemeResource FocusVisualBlackStrokeThemeBrush}" - StrokeEndLineCap="Square" - StrokeDashArray="1,1" - Opacity="0" - StrokeDashOffset="1.5" /> - </Grid> - </Border> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - <Style x:Key="ScenarioListBoxStyle" TargetType="ListBox"> - <Setter Property="Foreground" Value="{ThemeResource ListBoxForegroundThemeBrush}"/> - <Setter Property="Background" Value="Transparent"/> - <Setter Property="BorderBrush" Value="Transparent"/> - <Setter Property="BorderThickness" Value="{ThemeResource ListBoxBorderThemeThickness}"/> - <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/> - <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/> - <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Disabled"/> - <Setter Property="ScrollViewer.IsHorizontalRailEnabled" Value="True"/> - <Setter Property="ScrollViewer.VerticalScrollMode" Value="Enabled"/> - <Setter Property="ScrollViewer.IsVerticalRailEnabled" Value="True"/> - <Setter Property="ScrollViewer.ZoomMode" Value="Disabled"/> - <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False"/> - <Setter Property="ScrollViewer.BringIntoViewOnFocusChange" Value="True"/> - <Setter Property="IsTabStop" Value="False"/> - <Setter Property="TabNavigation" Value="Once"/> - <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/> - <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}"/> - <Setter Property="ItemsPanel"> - <Setter.Value> - <ItemsPanelTemplate> - <VirtualizingStackPanel Background="Transparent"/> - </ItemsPanelTemplate> - </Setter.Value> - </Setter> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="ListBox"> - <Border x:Name="LayoutRoot" BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent"> - <VisualStateManager.VisualStateGroups> - <VisualStateGroup x:Name="CommonStates"> - <VisualState x:Name="Normal"/> - <VisualState x:Name="Disabled"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="LayoutRoot"> - <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent"/> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - </VisualStateGroup> - <VisualStateGroup x:Name="FocusStates"> - <VisualState x:Name="Focused"> - <Storyboard> - <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="LayoutRoot"> - <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent"/> - </ObjectAnimationUsingKeyFrames> - </Storyboard> - </VisualState> - <VisualState x:Name="Unfocused"/> - </VisualStateGroup> - </VisualStateManager.VisualStateGroups> - <ScrollViewer x:Name="ScrollViewer" AutomationProperties.AccessibilityView="Raw" BringIntoViewOnFocusChange="{TemplateBinding ScrollViewer.BringIntoViewOnFocusChange}" HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}" Padding="{TemplateBinding Padding}" TabNavigation="{TemplateBinding TabNavigation}" VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" ZoomMode="{TemplateBinding ScrollViewer.ZoomMode}"> - <ItemsPresenter/> - </ScrollViewer> - </Border> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - -</ResourceDictionary> diff --git a/general/WinHEC 2017 Lab/WinHEC 2017 Lab.docx b/general/WinHEC 2017 Lab/WinHEC 2017 Lab.docx Binary files differdeleted file mode 100644 index c91f2bb0..00000000 --- a/general/WinHEC 2017 Lab/WinHEC 2017 Lab.docx +++ /dev/null diff --git a/general/WinHEC 2017 Lab/WinHEC 2017 Lab.zip b/general/WinHEC 2017 Lab/WinHEC 2017 Lab.zip Binary files differdeleted file mode 100644 index 9e8727c9..00000000 --- a/general/WinHEC 2017 Lab/WinHEC 2017 Lab.zip +++ /dev/null |
