// /////////////////////////////////////////////////////////////////////////////// // // THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY IT BY HAND. // /////////////////////////////////////////////////////////////////////////////// // // #include // // #include "StockQuote.h" // // #include "StockQuoteTypes.h" // // // // Port type http://example.com/stockquote/definitions/StockQuotePortType // Message type declarations // extern WSDXML_TYPE REQUESTTYPE_GetLastTradePrice; extern WSDXML_TYPE RESPONSETYPE_GetLastTradePrice; // // Port type http://example.com/stockquote/definitions/StockQuoteDeviceType // Message type declarations // // // HRESULT CreateStockQuoteHost( LPCWSTR pszDeviceAddress, const WSD_THIS_DEVICE_METADATA* pThisDeviceMetadata, IStockQuote* pIStockQuote, IWSDDeviceHost** ppHostOut, IWSDXMLContext** ppContextOut) { HRESULT hr = S_OK; IWSDXMLContext* pContext = NULL; IWSDDeviceHost* pHost = NULL; // // Validate parameters // if( NULL == pszDeviceAddress ) { return E_INVALIDARG; } if( NULL == pThisDeviceMetadata ) { return E_INVALIDARG; } // pIStockQuote is optional if( NULL == ppHostOut ) { return E_POINTER; } // ppContextOut is optional *ppHostOut = NULL; if( NULL != ppContextOut ) { *ppContextOut = NULL; } // // Create XML context for namespace and type registration // hr = WSDXMLCreateContext(&pContext); // // Register types used by the service // if( S_OK == hr ) { hr = StockQuoteRegisterTypes(pContext); } // // Register namespaces used by the service // if( S_OK == hr ) { hr = StockQuoteRegisterNamespaces(pContext); } // // Create device host // if( S_OK == hr ) { hr = WSDCreateDeviceHost(pszDeviceAddress, pContext, &pHost); } // // Register port types // if( S_OK == hr ) { hr = pHost->RegisterPortType(&PortType_StockQuotePortType); } // // Set metadata // if( S_OK == hr ) { hr = pHost->SetMetadata(&thisModelMetadata, pThisDeviceMetadata, &hostMetadata, NULL); } // // Register services and set discoverability // if( S_OK == hr && pIStockQuote != NULL ) { hr = pHost->RegisterService(L"http://example.com/stockquote/definitions/StockQuotePortType0", pIStockQuote); } // // Cleanup // if( S_OK == hr && ppContextOut ) { *ppContextOut = pContext; } else { if( NULL != pContext ) { pContext->Release(); } } if( S_OK == hr ) { *ppHostOut = pHost; } else { if( NULL != pHost ) { pHost->Release(); } } return hr; } // // HRESULT __stdcall Stub_GetLastTradePrice ( IUnknown* server , IWSDServiceMessaging* service , WSD_EVENT* event ) { HRESULT hr = S_OK; IStockQuote* pServer = NULL; REQUESTBODY_StockQuotePortType_GetLastTradePrice* p = reinterpret_cast(event->Soap->Body); RESPONSEBODY_StockQuotePortType_GetLastTradePrice result; ::ZeroMemory(&result,sizeof(result)); hr = server->QueryInterface( __uuidof(IStockQuote), (void**)&pServer ); if( S_OK == hr ) { hr = pServer->GetLastTradePrice ( p->body , &result.body ); pServer->Release(); pServer = NULL; } if (SUCCEEDED(hr)) { hr = service->SendResponse(&result,event->Operation,event->MessageParameters); } if (FAILED(hr)) { hr = service->FaultRequest(&event->Soap->Header,event->MessageParameters, NULL); } // Clean up memory from outparams if (NULL != result.body) { WSDFreeLinkedMemory( (void*) (result.body) ); } return hr; } //