Changeset 38655 in vbox
- Timestamp:
- Sep 6, 2011 10:54:10 AM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 73865
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/VBoxGuest.h
r38650 r38655 350 350 /** Get the pointer to the first HGCM parameter in a 32-bit request. */ 351 351 # define VBOXGUEST_HGCM_CALL_PARMS32(a) ( (HGCMFunctionParameter32 *)((uint8_t *)(a) + sizeof(VBoxGuestHGCMCallInfo)) ) 352 353 /** IOCTL to VBoxGuest to make a connect to the clipboard service.354 * @todo Seems this is no longer is use. Try remove it. */355 # define VBOXGUEST_IOCTL_CLIPBOARD_CONNECT VBOXGUEST_IOCTL_CODE_(19, sizeof(uint32_t))356 352 357 353 #endif /* VBOX_WITH_HGCM */ -
trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest.cpp
r38648 r38655 713 713 pDevExt->u32MousePosChangedSeq = 0; 714 714 pDevExt->SessionSpinlock = NIL_RTSPINLOCK; 715 pDevExt->u32ClipboardClientId = 0;716 715 pDevExt->MemBalloon.hMtx = NIL_RTSEMFASTMUTEX; 717 716 pDevExt->MemBalloon.cChunks = 0; … … 1826 1825 } 1827 1826 1828 1829 /**1830 * @returns VBox status code. Unlike the other HGCM IOCtls this will combine1831 * the VbglHGCMConnect/Disconnect return code with the Info.result.1832 *1833 * @param pDevExt The device extension.1834 * @param pu32ClientId The client id.1835 * @param pcbDataReturned Where to store the amount of returned data. Can1836 * be NULL.1837 */1838 static int VBoxGuestCommonIOCtl_HGCMClipboardReConnect(PVBOXGUESTDEVEXT pDevExt, uint32_t *pu32ClientId, size_t *pcbDataReturned)1839 {1840 int rc;1841 VBoxGuestHGCMConnectInfo CnInfo;1842 1843 Log(("VBoxGuestCommonIOCtl: CLIPBOARD_CONNECT: Current u32ClientId=%RX32\n", pDevExt->u32ClipboardClientId));1844 1845 /*1846 * If there is an old client, try disconnect it first.1847 */1848 if (pDevExt->u32ClipboardClientId != 0)1849 {1850 VBoxGuestHGCMDisconnectInfo DiInfo;1851 DiInfo.result = VERR_WRONG_ORDER;1852 DiInfo.u32ClientID = pDevExt->u32ClipboardClientId;1853 rc = VbglR0HGCMInternalDisconnect(&DiInfo, VBoxGuestHGCMAsyncWaitCallback, pDevExt, RT_INDEFINITE_WAIT);1854 if (RT_SUCCESS(rc))1855 {1856 LogRel(("VBoxGuestCommonIOCtl: CLIPBOARD_CONNECT: failed to disconnect old client. VbglHGCMDisconnect -> rc=%Rrc\n", rc));1857 return rc;1858 }1859 if (RT_FAILURE((int32_t)DiInfo.result))1860 {1861 Log(("VBoxGuestCommonIOCtl: CLIPBOARD_CONNECT: failed to disconnect old client. DiInfo.result=%Rrc\n", DiInfo.result));1862 return DiInfo.result;1863 }1864 pDevExt->u32ClipboardClientId = 0;1865 }1866 1867 /*1868 * Try connect.1869 */1870 CnInfo.Loc.type = VMMDevHGCMLoc_LocalHost_Existing;1871 strcpy(CnInfo.Loc.u.host.achName, "VBoxSharedClipboard");1872 CnInfo.u32ClientID = 0;1873 CnInfo.result = VERR_WRONG_ORDER;1874 1875 rc = VbglR0HGCMInternalConnect(&CnInfo, VBoxGuestHGCMAsyncWaitCallback, pDevExt, RT_INDEFINITE_WAIT);1876 if (RT_FAILURE(rc))1877 {1878 LogRel(("VBoxGuestCommonIOCtl: CLIPBOARD_CONNECT: VbglHGCMConnected -> rc=%Rrc\n", rc));1879 return rc;1880 }1881 if (RT_FAILURE(CnInfo.result))1882 {1883 LogRel(("VBoxGuestCommonIOCtl: CLIPBOARD_CONNECT: VbglHGCMConnected -> rc=%Rrc\n", rc));1884 return rc;1885 }1886 1887 Log(("VBoxGuestCommonIOCtl: CLIPBOARD_CONNECT: connected successfully u32ClientId=%RX32\n", CnInfo.u32ClientID));1888 1889 pDevExt->u32ClipboardClientId = CnInfo.u32ClientID;1890 *pu32ClientId = CnInfo.u32ClientID;1891 if (pcbDataReturned)1892 *pcbDataReturned = sizeof(uint32_t);1893 1894 return VINF_SUCCESS;1895 }1896 1827 1897 1828 #endif /* VBOX_WITH_HGCM */ … … 2418 2349 rc = VBoxGuestCommonIOCtl_HGCMDisconnect(pDevExt, pSession, (VBoxGuestHGCMDisconnectInfo *)pvData, pcbDataReturned); 2419 2350 break; 2420 2421 case VBOXGUEST_IOCTL_CLIPBOARD_CONNECT:2422 CHECKRET_MIN_SIZE("CLIPBOARD_CONNECT", sizeof(uint32_t));2423 rc = VBoxGuestCommonIOCtl_HGCMClipboardReConnect(pDevExt, (uint32_t *)pvData, pcbDataReturned);2424 break;2425 2351 #endif /* VBOX_WITH_HGCM */ 2426 2352 -
trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuestInternal.h
r38654 r38655 145 145 /** Spinlock various items in the VBOXGUESTSESSION. */ 146 146 RTSPINLOCK SessionSpinlock; 147 148 /** The current clipboard client ID, 0 if no client.149 * For implementing the VBOXGUEST_IOCTL_CLIPBOARD_CONNECT interface. */150 uint32_t u32ClipboardClientId;151 147 #ifdef VBOX_WITH_VRDP_SESSION_HANDLING 152 148 BOOL fVRDPEnabled; … … 172 168 */ 173 169 #ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP 174 uint8_t abAlignment1[HC_ARCH_BITS == 32 ? 14 0 : 52];170 uint8_t abAlignment1[HC_ARCH_BITS == 32 ? 144 : 60]; 175 171 #else 176 uint8_t abAlignment1[HC_ARCH_BITS == 32 ? 8 4 : 4];172 uint8_t abAlignment1[HC_ARCH_BITS == 32 ? 88 : 12]; 177 173 #endif 178 174
Note:
See TracChangeset
for help on using the changeset viewer.