VMware Horizon Session Enhancement SDK Programming Guide - VMware .

1y ago
31 Views
2 Downloads
1.08 MB
119 Pages
Last View : 20d ago
Last Download : 3m ago
Upload by : Aydin Oneil
Transcription

VMware Horizon Session EnhancementSDK Programming GuideFor Horizon 7, Horizon 8, and Horizon Cloud Service onMicrosoft AzureVMware Horizon Session Enhancement SDK 3.3

VMware Horizon Session Enhancement SDK Programming GuideYou can find the most up-to-date technical documentation on the VMware website at:https://docs.vmware.com/VMware, Inc.3401 Hillview Ave.Palo Alto, CA 94304www.vmware.comCopyrightVMware, Inc. 2021 VMware, Inc. All rights reserved. Copyright and trademark information.2

ContentsVMware Horizon Session Enhancement SDK Programming Guide 81 Overview of the VMware Horizon Session Enhancement SDK 9Introduction to the VMware Horizon Session Enhancement API9What's New in VMware Horizon Session Enhancement SDK 3.311About VMware Horizon Session Enhancement Key ConceptsVMware Horizon Session Enhancement Program FlowQuery InterfaceRPC API11131417Overlay API19Virtual Channel and Side Channel SecurityInstallation2021Sample Code222 Data Types and Error Codes 23Data Types23Error Codes273 Channel Interaction Functions 4 RPC Functions re, Inc.413

VMware Horizon Session Enhancement SDK Programming ariantInitVMware, Inc.53634

VMware Horizon Session Enhancement SDK Programming v3.GetObjectOptions69v4.GetObjectStateByName705 Overlay Functions 71VDPOverlayGuest Interface xit for the Guest-Side Libraryv1.GetLayoutMode717273v1.Init for the Guest-Side dv1.RegisterWindow7475v1.SendMsg for the Guest-Side tInfoString8686VDPOverlayClient Interface Functionsv1.Exit for the Client-Side Libraryv1.GetInfo888888v1.Init for the Client-Side Library89v1.SendMsg for the Client-Side LibraryVMware, Inc.75905

VMware Horizon Session Enhancement SDK Programming 03103v4.SetInfoStringProperties1056 Channel Sinks Changedv1.OnPeerObjectCreated1071077 RPC Sinks ectStateChanged1108 Overlay Sinks 111VDPOverlayGuest Sink 11112v1.OnOverlayRejected112v1.OnUserMsg (Guest Sink)112VDPOverlayClient Sink Functionsv1.OnLayoutModeChangedVMware, 141131136

VMware Horizon Session Enhancement SDK Programming Guidev1.OnUserMsg (Client Mware, 1197

VMware Horizon Session Enhancement SDKProgramming GuideThis document, VMware Horizon Session Enhancement SDK Programming Guide, provides information about developing applications using the VMware Horizon Session EnhancementApplication Programming Interface (API). VMware provides several software development kit(SDK) products, each of which targets different developer communities and platforms.Intended AudienceThis guide is intended for software developers who want to create applications that are usedremotely over a VMware Horizon 7, VMware Horizon 8, or VMware Horizon Cloud Service onMicrosoft Azure connection.VMware, Inc.8

Overview of the VMware HorizonSession Enhancement SDK1With the VMware Horizon Session Enhancement Software Development Kit (SDK), you candevelop applications that communicate between a client and a remote desktop over a Horizonconnection using the Blast Extreme or PCoIP display protocol.The SDK contains resources such as documentation, include files, and code samples, to help youdevelop applications that use the VMware Horizon Session Enhancement API.This chapter includes the following topics:nIntroduction to the VMware Horizon Session Enhancement APInWhat's New in VMware Horizon Session Enhancement SDK 3.3nAbout VMware Horizon Session Enhancement Key ConceptsnVMware Horizon Session Enhancement Program FlownQuery InterfacenRPC APInOverlay APInVirtual Channel and Side Channel SecuritynInstallationnSample CodeIntroduction to the VMware Horizon Session EnhancementAPIThe VMware Horizon Session Enhancement API specifies how the client side and the desktopside of an application can communicate over a Horizon connection. All interactions with the APIare asynchronous.Any software that uses the Horizon Session Enhancement API must have two components:nApplicationThis is the code that runs on a remote desktop.VMware, Inc.9

VMware Horizon Session Enhancement SDK Programming GuidenPlug-InThis is the code that is installed on a client.The Horizon Session Enhancement API consists of two distinct APIs:nRemote Procedure Call (RPC) APIThe RPC API provides an asynchronous, callback-driven communication channel betweenapplications that run on a remote desktop and a plug-in that runs on a client. The RPC APIalso handles the marshaling and un-marshaling of parameters.nOverlay APIThe Overlay API solves the problem of displaying rendered images on the client. Imagesappear to a user as a local window on the remote desktop.OpenSSL IssueThe Horizon Session Enhancement API dynamically loads the OpenSSL library to implement itssecurity features. If a software's application and plug-in components also dynamically load theOpenSSL library in the same way as the Horizon Session Enhancement API, you must adhere tothe following rules to prevent crashes or exceptions.1Plug-in components must not call the CRYPTO set locking callback(),CRYPTO set id callback(), and CRYPTO set add lock callback() functions since vmware-remotemks already call these functions.2Application components must set up the preceding callbacks before loading the HorizonSession Enhancement API library. They must also ensure that those callbacks are valid beforeunloading the Horizon Session Enhancement API library.3If the code is shared by both the plug-in and application components, you must call thepreceding three callback functions if CRYPTO get locking callback() returns NULL. You mustcall those three functions to set callbacks at the same time.Supported Versions of Horizon SoftwareThe Horizon Session Enhancement API supports the following types of pods.nHorizon pods running Horizon 7 or Horizon 8 (Horizon 2006 and later) software.To support the latest features and interfaces of the Horizon Session Enhancement API,ensure that your Horizon pods are running on the latest release version of Horizon 7 orHorizon 8.nHorizon Cloud pods in Microsoft Azure.VMware, Inc.10

VMware Horizon Session Enhancement SDK Programming GuideTo support the latest features and interfaces of the Horizon Session Enhancement API,ensure that your Horizon Cloud pods are running on the latest release version of the podmanifest.Note If your pods are running on an older release version of Horizon software or of the HorizonCloud Service on Microsoft Azure pod manifest, some features and interfaces of the HorizonSession Enhancement API are not supported.Supported Client Operating SystemsThe Horizon Session Enhancement API supports all Windows, Linux, and Mac operating systemsthat the Horizon Client software supports. For more information about supported operatingsystems, see the VMware Horizon Client Documentation.What's New in VMware Horizon Session Enhancement SDK3.3The following list summarizes the new features and changes found in version 3.3 of the VMwareHorizon Session Enhancement SDK.nThe Overlay API offers improvements for displaying rendered images.nThis version of the SDK no longer ships with a copy of VDPService.dll. To preservecompatibility with previous and future releases of Horizon, you must use the copy ofVDPService.dll that is installed with the Horizon agent software. For more information, seethe "Remote Desktop" section under Installation.nThis version of the SDK includes a .cpp file that replaces the import library from previousversions. The .cpp file provides API entry points and the code for loading VDPService.dll.About VMware Horizon Session Enhancement Key ConceptsTo effectively use the VMware Horizon Session Enhancement API, it is important to becomefamiliar with the key concepts in Horizon Session Enhancement.ConnectionA connection refers to a Horizon session over the Blast Extreme or PCoIP protocol. You cannotalter a connection through the Horizon Session Enhancement API, but you can determine thecurrent state of a connection. If a connection is not in the connected state, no action can betaken with the API. You can receive notification of a change in a connection's state usingVDPService ChannelNotifySink through the v1.OnConnectionStateChanged callback. You can alsoretrieve the current state of a connection using the v1.GetConnectionState method that is found inthe VDPService ChannelInterface API.VMware, Inc.11

VMware Horizon Session Enhancement SDK Programming GuideChannelA channel represents the link between a remote application and a local plug-in. The state of achannel is not necessarily the same as the state of a connection.You can receive notification of a change in the state of a channel through theVDPService ChannelNotifySink function that you register with the channel. Thev1.OnChannelStateChanged callback delivers the state change. You can query the current state of achannel using the v1.GetChannelState method in VDPService ChannelInterface.Side ChannelA side channel represents an additional link between a remote application and a local plug-in. Aside channel belongs to a channel object and is set up via channel. A side channel can only beestablished after a channel object is connected. A side channel is designed to reduce applicationresponse time when there is network congestion in the main channel. For example, an applicationcan use the main channel to transfer real-time control messages and use the side channel totransfer large amounts of user data.Channel ContextA channel context is a wrapper for the parameters and return values of a remote call. A channelcontext holds all of the information for the receiver of a remote call to determine which method isrequested. Interaction with the channel context is done using VDPRPC ChannelContextInterface.OverlayAn overlay is a window or image that is displayed over another so that the image or windowoverlay appears to be part of the underlying UI. This is typically done for video that plays locally,but needs to appear as if it is playing on the remote machine.Remote Procedure CallA remote procedure call (RPC) is an invocation of a method on a non-local machine. Typically, theremote machine publishes a set of methods that it responds to, and the client invokes themethods through some channel. A call to v1.Invoke initiates an RPC.SinkA sink is a structure of function pointers and is used to communicate asynchronously with usercode. Each API call has one or more sets of sinks. The user must register the sinks to receive thenecessary callbacks that give the user important information.VMware, Inc.12

VMware Horizon Session Enhancement SDK Programming GuideVariantTo ease cross-platform communication, all parameters that are used with the VDP RPC API arewrapped in the VDP RPC VARIANT data type. This data type contains an identifier that indicates thetype of data in the structure and the data itself. The use of variants is done throughVDPRPC VariantInterface.VMware Horizon Session Enhancement Program FlowA typical Horizon Session Enhancement program flow involves the initialization of an application,a plug-in, threads, and a channel. It also includes sink registration, the calling of RPC and OverlayAPI methods, and shutting down.Application InitializationThe user controls the startup of the remote side of the Horizon Session Enhancement system.Upon application launch, the user code calls the VDPService ServerInit method and gets theVDP SERVICE QUERY INTERFACE structure. The user code then calls the QueryInterface() method tofetch all the interfaces that it needs to do its work.Note If QueryInterface() returns FALSE, your Horizon software version does not support thefunction interface that you are trying to fetch.Plug-In InitializationOn the local side, it is the Horizon Session Enhancement system that initializes the plug-in code. Inthe VDPService PluginInit call, the user code must store the passed-in reference to theVDP SERVICE QUERY INTERFACE structure and use it to request all the interfaces that it needs. At thispoint the user code is only loaded. Once the matching application for the loaded plugin starts,VDPService PluginCreateInstance is called. In this callback, the user may return a pointer that isreturned in each callback, so that the user code can maintain its state. To match a plug-in and anapplication, VDPService calls the plug-in's VDPService PluginGetTokenName method and comparesthe string that is returned with the string that is given by the application.Before returning from the VDPService PluginCreateInstance callback, the user code must callConnect from VDPService ChannelInterface.Note Due to a limitation in the underlying protocol used, the TokenName variable must be lessthan 16 bytes in length.Sink RegistrationTo receive callbacks from the Horizon Session Enhancement system, you must register sinks fordifferent notifications. The first sink to register is VDPService ChannelNotifySink. This sink notifiesyou of changes to the connection state, the channel state, and when the application has createdan object. For more information about object creation, see Channel Object. To register the sink,VMware, Inc.13

VMware Horizon Session Enhancement SDK Programming Guideuse the v1.RegisterChannelNotifySink method in VDPService ChannelInterface. After the sink isregistered, you receive a handle for that sink that you can use to unregister the sink. You mustregister VDPService ChannelNotifySink before you call v1.Connect to ensure that you receive anotification when the channel is available.After you register VDPService ChannelNotifySink, you most likely will not receive a callback for aconnection state change. This is because by the time the application or plug-in is started, theconnection is likely to be in the connected state. To confirm that the connection is in the properstate prior to any actions, use the GetConnectionState method.In addition to VDPService ChannelNotifySink, the following sinks exist:nVDPRPC ObjectNotifySinkThis is for individual channel objects.nVDPRPC RequestCallbackThis is for callbacks for each RPC call.nVDPOverlayGuest SinkThis is for important overlay notifications for the guest.nVDPOverlayClient SinkThese are for important overlay notifications for the client.Thread InitializationOn the application side, the main thread is the one that the user calls VDPService ServerInit on.On the plug-in side, the main thread is the one that the VDPService PluginCreateInstance callbackis received on. For other threads, you must call ThreadInitialize before you call any othermethod in the RPC APIs or the Overlay APIs.If a thread is no longer needed, you must uninitialize it by calling the v1.ThreadUninitializemethod.ChannelFor communication to occur, the channel between the application and the plug-in must be active.To initialize the channel connection, call the v1.Connect method. It must be called on both sides ofthe connection for each channel. To shut down a channel, call the v1.Disconnect method.After you call v1.Disconnect, or whenever the channel is in a disconnected state, you must free allyour channel objects using the v1.DestroyChannelObject method. If the channel is connectedagain, you must recreate any required objects.Query InterfaceQueryInterface() returns an interface, or a structure of function pointers. Both applications andplug-ins must call QueryInterface() to retrieve the necessary interfaces.VMware, Inc.14

VMware Horizon Session Enhancement SDK Programming GuideThe query interface data type VDP SERVICE QUERY INTERFACE is a structure that is defined invdpService.h. The application and the plug-in receive a reference to this structure differently.The structure has two members: a version attribute, and a function pointer. The version attributenotifies the user's application which version of the APIs are available. The function pointer is howthe user's code will access the other APIs in the system. The function pointer has the followingdefinition.Bool (*QueryInterface) (const GUID *iid, void *iface);The QueryInterface() function fetches the functions that the user needs to interact with theHorizon Session Enhancement API. The following table lists the GUIDs that are defined byHorizon Session Enhancement and the function lists that the GUIDs return.Note If QueryInterface() returns FALSE, your Horizon software version does not support thefunction interface that you are trying to fetch.Table 1-1. Horizon Session Enhancement GUIDsGUIDReturned Function ListVersionHeader FileGUID VDPRPC VariantInterface V1VDPRPC VariantInterfacev1vdprpc interface.hGUID VDPRPC ChannelObjectInterface V3VDPRPC ChannelObjectInterfacev3vdprpc interfaces.hGUID VDPRPC ChannelObjectInterface V4VDPRPC ChannelObjectInterfacev4vdprpc interfaces.hGUID VDPRPC ChannelContextInterface V2VDPRPC ChannelContextInterfacev2vdprpc interfaces.hGUID VDPOverlay GuestInterface V2VDPOverlay GuestInterfacev2vdpOverlay.hGUID VDPOverlay GuestInterface V3VDPOverlay GuestInterfacev3vdpOverlay.hGUID VDPOverlay GuestInterface V4VDPOverlay GuestInterfacev4vdpOverlay.hGUID VDPOverlay ClientInterface V2VDPOverlay ClientInterfacev2vdpOverlay.hGUID VDPOverlay ClientInterface V3VDPOverlay ClientInterfacev3vdpOverlay.hGUID VDPOverlay ClientInterface V4VDPOverlay ClientInterfacev4vdpOverlay.hGUID VDPService ChannelInterface V2VDPService ChannelInterfacev2vdpService interfaces.hGUID VDPService ChannelInterface V3VDPService ChannelInterfacev3vdpService interfaces.hGUID VDPService ChannelInterface V4VDPService ChannelInterfacev4vdpService interfaces.hGUID VDPService ServerInterface V1VDPService ServerInterfacev1vdpService interfaces.hGUID VDPService LocalJobInterface V1VDPService LocalJobInterfacev1vdpService interfaces.hVMware, Inc.15

VMware Horizon Session Enhancement SDK Programming GuideTable 1-1. Horizon Session Enhancement GUIDs (continued)GUIDReturned Function ListVersionHeader FileGUID VDPRPC StreamDataInterface V2VDPRPC StreamDataInterfacev2vdprpc interfaces.hGUID VDPService ObserverInterface V1VDPService ObserverInterfacev1vdpService interfaces.hThe following sample code shows how to request an interface.VDP SERVICE QUERY INTERFACE qi;VDPService ChannelInterface ci;qi.QueryInterface(&GUID VDPService ChannelInterface V1, &ci);ApplicationThe user launches the application, which is the component that runs on the remote desktop.After the Application starts and vdpService.dll is loaded, the application callsVDPService ServerInit(). When the application exits, it must call VDPService ServerExit(). Thefollowing table describes the two server functions.Table 1-2. Horizon Session Enhancement Server FunctionsFunctionDescriptionVDPService ServerInitThe application calls this function when it starts. It must pass an identifying string (thetoken) to the function. The function returns a pointer to VDP SERVICE QUERY INTERFACE andthe channel handle for this application, which uses the channel handle to initialize userthreads.VDPService ServerExitThe application calls this function when it closes down.VDPService ServerInit2Same as VDPService ServerInit but for a different session. Caller needs to have sufficientprivilege.VDPService ServerExit2Same as VDPService ServerExit but for a different session. Caller needs to have sufficientprivilege.The following sample code shows how an application initializes./* program startup ( tWinMain for example) */VDP SERVICE QUERY INTERFACE qi;void *channelHandle;VDPRPC VariantInterface vi;VDPOverlay GuestInterface ogi;/* other interfaces omitted */VDPService ServerInit("example" /* token */, &qi, &channelHandle);qi.QueryInterface(&GUID VDPRPC VariantInterface V1, &vi);qi.QueryInterface(&GUID VDPOverlay GuestInterface V1, &ogi);/* . */VMware, Inc.16

VMware Horizon Session Enhancement SDK Programming GuidePlug-inThe main difference between the plug-in and the application is that the Horizon software loadsthe code on the client. Therefore, the user-compiled code must be in a DLL or a shared objectthat the system loads. The plug-in must export the following functions.Table 1-3. Horizon Session Enhancement Exported Plug-In FunctionsFunctionDescriptionVDPService PluginInitInvoked when the DLL or SO is loaded. The plug-in receives its reference toVDP SERVICE QUERY INTERFACE.VDPService PluginInitWithPathFSimilar to the VDPService PluginInit function, but with an additional parameter fornthe absolute path to where the plug-in is loaded from the disk.VDPService PluginExitInvoked when the DLL or SO is unloaded and the user session ends.VDPService PluginGetTokenNameHorizon Session Management uses this function to match the plug-in with theapplication. The token that this function returns must match the token that thematching application passes to VDPService ServerInit for communication to occur.VDPService PluginCreateInstancInvoked when a new channel's identifier matches the one thatVDPService PlugingetTokenName returns. More than one instance of a plug-in mayeexist. Horizon Session management matches instances of the plug-in to the correctchannel.VDPService PluginDestroyInstanCalled when the channel this plug-in instance runs on closes.ceRPC APIWith the RPC API, applications and plug-ins can communicate across channels. You must performall VDPService initialization steps before you call the RPC API.Channel ObjectBefore communication can occur, a channel object with the same name must exist on both sidesof the connection. To create a channel object, call the v1.CreateChannelObject method. It does notmatter whether the channel object is created in the application or in the plug-in first. The initialstate of the channel object is disconnected.When a channel object is created, a message is sent to the other side of the connection, wherethe callback function v1.OnPeerObjectCreated is called. To create a matching object, call thev1.CreateChannelObject method. After the matching object is created, the state of the object onboth sides is connected and both sides receive a state change notification.After a channel object is connected, you can request a side channel for this object. There are twotypes of side channels: virtual side channel and TCP side channel. A virtual side channel is anadditional virtual channel. A TCP side channel is a TCP socket connection between a client and anagent. When a side channel is established and both sides receive a state change notification, thestate of the channel object will change to VDP RPC OBJ SIDE CHANNEL CONNECTED.VMware, Inc.17

VMware Horizon Session Enhancement SDK Programming GuideFor a TCP side channel, an agent application can switch to stream data mode to save resources.In stream data mode, all VDPService internal threads will be exited and an application has to usea TCP socket to send data to and receive data from a plug-in. RPC packets can be created andparsed by stream data APIs.InvokeAfter you create a channel object, you can invoke an RPC with the v1.Invoke method. You mustmake the v1.Invoke call on the thread that you create the object on, unless the object isconfigured to allow invoke on any thread.The v1.Invoke call requires a ChannelContext data structure, which is a wrapper for all the data forthe RPC, such as the command, parameters, and so on. You create a context with thev1.CreateContext function. After the context is created, add information for the RPC to thecontext with the VDPRPC ChannelContextInterface methods and pass the context to v1.Invoke.Even though you create the context, if the call to Invoke succeeds, the API is responsible forfreeing the context. This is because of the asynchronous nature of the API. When the call tov1.Invoke returns, the context might still be in use.Each channel context has a unique ID that you can retrieve with the v1.GetId method. The ID of acontext that is passed to an v1.Invoke call is returned as a parameter in the v1.OnDone andv1.OnAbort handlers. You can use the ID to map the callbacks to the v1.Invoke call that they referto. The ID of a context that is passed to the handlers represents the return values from the otherend of the connection and does not match the originating context ID.VariantAll data that you add to a channel context must be in a VDP RPC VARIANT data structure. Thefollowing code sample shows how to add data to a variant and append it to a context.VDP RPC VARIANT var;VDPRPC VariantInterface varIface;VDPRPC ChannelContextInterface ctxtIface;void *contextHandle;// Call VariantInit() before using the variant// Failure to call VariantInit() can cause memory corruption issuesvarIface.v1.VariantInit(&var);// Add the parameters to the contextvarIface.v1.VariantFromInt32(&var, 32);ctxtIface.v1.AppendParam(contextHandle, &var);// The same variant can be used for multiple parametersvarIface.v1.VariantFromString(&var, "sample le, "sample param", &var);VMware, Inc.18

VMware Horizon Session Enhancement SDK Programming Guide// Call VariantClear() after all parameters are added to the context// Failure to call VariantClear() can lead to memory leaksvarIface.v1.VariantClear(&var);It is recommended that you use the RPCVariant class included with the sample code.You must call v1.VariantInit before using a variant to avoid causing memory corruption.After each use of a variant, call the v1.VariantClear method to ensure that all resources arefreed.OnInvokeOn a successful v1.Invoke call, the peer object receives an v1.OnInvoke callback. In this callbackyou receive a channel context. The context contains all of the information for the call. Torespond, add the appropriate return code and return values to the channel context, which isreturned to the caller when the v1.OnInvoke call returns.Application ShutdownThe application must call VDPService ServerExit.Plug-In ShutdownThe following functions are called during the plug-in shutdown process.nVDPService PluginDestroyInstance is called when the channel associated with the remotedesktop application is closed. Each call to VDPService PluginCreateInstance has acorresponding call to VDPService PluginDestroyInstance.nVDPService PluginExit is called when the Horizon session ends, immediately before the pluginDLL is unloaded. The plug-in must free all resources and shut down.Overlay APIWith the Overlay API, you can overlay a window or an image on top of another window or image.You typically do this to make video that is playing locally appear as if it is playing on a remotemachine.Guest SetupTo use the Overlay API, the first step is to initialize the guest interface by calling the v1.Initmethod. After a successful initialization, register the window that you want to overlay by callingthe v1.RegisterWindow or v3.RegisterWindow method. The size and position of the registeredwindow are tracked and sent to the client automatically. If the client does not reject theregistered window, you receive the v1.OnOverlayReady callback. When you receive this callback,you call the v1.EnableOverlay function to display the overlay on the client.When you are finished with the window, unregister it by calling v1.UnregisterWindow.VMware, Inc.19

VMware Horizon Session Enhancement SDK Programming GuideClient SetupOn the client, the first step is to initialize the interface by calling v1.Init, which returns a contextID. You use the ID to identify the plug-in instance. When the guest registers a window, the clientis notified through the v1.OnWindowRegistered sink callback, which gives you a window ID. Youneed both the context ID and the window ID to update the overlay.After you receive the v1.OnOverlayReady callback, you can start displaying your image by callingthe v1.Update or v2.Update method. The API does not keep a copy of the image unless thecopyImage flag is set to true. If you do not own the imag

that the Horizon Client software supports. For more information about supported operating systems, see the VMware Horizon Client Documentation. What's New in VMware Horizon Session Enhancement SDK 3.3 The following list summarizes the new features and changes found in version 3.3 of the VMware Horizon Session Enhancement SDK.

Related Documents:

AWS SDK for JavaScript AWS SDK for JavaScript code examples AWS SDK for .NET AWS SDK for .NET code examples AWS SDK for PHP AWS SDK for PHP code examples AWS SDK for Python (Boto3) AWS SDK for Python (Boto3) code examples AWS SDK for Ruby AWS SDK for Ruby co

VMware Products 8 VMware Infrastructure 9 ESX Server 10 VirtualCenter Server 12 VI Client 12 VMware Management APIs 12 VI SDK 13 CIM APIs 14 VIX API 14 GuestSDK 14 VMware VMCI 15 Legacy APIs 15 Other APIs 15 CHAPTER 2: VI SDK BASICS 16 Overview of the VI SDK 16 What Is Included in VI SDK 2.5? 17 Object Model 17 Unified Interface with Different .

2.7 VMware vCenter Support Assistant 22 2.8 VMware Continuent 23 2.9 VMware Hyper-Converged Infrastructure Kits 23 2.10 VMware Site Recovery Manager 23 2.11 VMware NSX 24 2.12 VMware NSX Advanced Load Balancer 28 2.13 VMware SD-WAN by VeloCloud 29 2.14 VMware Edge Network Intelligence 30 2.15 VMware NSX Firewall 30

What Is VMware Horizon 7 with Microsoft Office 365? This section briefly describes VMware Horizon 7 and Microsoft Office 365 in preparation for using them together. What is VMware Horizon 7? VMware Horizon 7 is a family of desktop and application virtualization solutions designed to deliver Windows and Linux virtual desktops and published .

software version. If using an older software version, note that the screenshots presented here may not match the WebUI exactly. 4. VMware Horizon Versions Supported v6.2 & later 5. VMware Horizon VMware Horizon (formerly VMware Horizon View) is a virtual desktop infrastructure (VDI) solution that simplifies

For more information, see the VMware Horizon View Client Test details in "Functional Tests" on page 19. Video Capturing software, installed on the system where VMware Horizon View Client is installed. Appropriate display drivers - supplied and supported by GPU vendors. VMware Horizon environment - VMware Horizon 7.0 or a later release.

The gold image used for testing was configured using VMware's PCoIP best practices. These settings are shown on page 20 in the "VMware Horizon View Best Practices Performance Study" white paper found here. The settings are intended for VMware Horizon View environments, but also apply to VMware Horizon DaaS desktop images using PCoIP.

Asset Management Sector Report 1. This is a report for the House of Commons Committee on Exiting the European Union following the motion passed at the Opposition Day debate on 1 November, which called on the Government to provide the Committee with impact assessments arising from the sectoral analysis it has conducted with regards to the list of 58 sectors referred to in the answer of 26 June .