- Timestamp:
- Mar 2, 2023 1:52:48 PM (19 months ago)
- Location:
- trunk
- Files:
-
- 6 edited
-
include/VBox/HostServices/GuestControlSvc.h (modified) (2 diffs)
-
include/VBox/VBoxGuestLib.h (modified) (1 diff)
-
src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibGuestCtrl.cpp (modified) (8 diffs)
-
src/VBox/Additions/common/VBoxService/VBoxServiceControl.h (modified) (1 diff)
-
src/VBox/Additions/common/VBoxService/VBoxServiceControlSession.cpp (modified) (4 diffs)
-
src/VBox/Main/src-client/GuestDirectoryImpl.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/HostServices/GuestControlSvc.h
r98792 r98818 1033 1033 /** Directory open flags (GSTCTLDIR_F_XXX). */ 1034 1034 HGCMFunctionParameter flags; 1035 /** Additional directory attributes to use 1036 * (GSTCTLFSOBJATTRADD, for subsequent directory entry read calls). */ 1037 HGCMFunctionParameter read_attr_add; 1038 /** Directory reading flags (for subsequent directory entry read calls). 1039 * GSTCTL_PATH_F_ON_LINK or GSTCTL_PATH_F_FOLLOW_LINK. */ 1040 HGCMFunctionParameter read_flags; 1035 1041 } HGCMMsgDirOpen; 1036 1042 … … 1060 1066 * @sa GSTCTL_DIRENTRY_MAX_SIZE */ 1061 1067 HGCMFunctionParameter max_entry_size; 1062 /** Additional directory attributes to use (GSTCTLFSOBJATTRADD). */1063 HGCMFunctionParameter add_attributes;1064 /** Directory reading flags.1065 * GSTCTL_PATH_F_ON_LINK or GSTCTL_PATH_F_FOLLOW_LINK. */1066 HGCMFunctionParameter flags;1067 1068 } HGCMMsgDirRead; 1068 1069 -
trunk/include/VBox/VBoxGuestLib.h
r98817 r98818 1118 1118 */ 1119 1119 VBGLR3DECL(int) VbglR3GuestCtrlDirGetCreate(PVBGLR3GUESTCTRLCMDCTX pCtx, char *pszPath, uint32_t cbPath, uint32_t *pfMode, uint32_t *pfFlags); 1120 VBGLR3DECL(int) VbglR3GuestCtrlDirGetOpen(PVBGLR3GUESTCTRLCMDCTX pCtx, char *pszPath, uint32_t cbPath, uint32_t *pfFlags, GSTCTLDIRFILTER *penmFilter );1120 VBGLR3DECL(int) VbglR3GuestCtrlDirGetOpen(PVBGLR3GUESTCTRLCMDCTX pCtx, char *pszPath, uint32_t cbPath, uint32_t *pfFlags, GSTCTLDIRFILTER *penmFilter, GSTCTLFSOBJATTRADD *penmReadAttrAdd, uint32_t *pfReadFlags); 1121 1121 VBGLR3DECL(int) VbglR3GuestCtrlDirGetClose(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle); 1122 VBGLR3DECL(int) VbglR3GuestCtrlDirGetRead(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle, uint32_t *pcbDirEntry , uint32_t *penmAddAttrib, uint32_t *pfFlags);1122 VBGLR3DECL(int) VbglR3GuestCtrlDirGetRead(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle, uint32_t *pcbDirEntry); 1123 1123 VBGLR3DECL(int) VbglR3GuestCtrlDirGetRewind(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle); 1124 1124 /** @} */ -
trunk/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibGuestCtrl.cpp
r98817 r98818 990 990 * @param pfFlags Where to return the directory listing flags. 991 991 * @param enmFilter Where to return the directory filter type. 992 * @param penmAttrAdd Where to return the additional attributes enumeration to use for reading directory entries later. 993 * @param pfReadFlags Where to return the flags for reading directory entries later. 992 994 */ 993 995 VBGLR3DECL(int) VbglR3GuestCtrlDirGetOpen(PVBGLR3GUESTCTRLCMDCTX pCtx, char *pszPath, uint32_t cbPath, uint32_t *pfFlags, 994 GSTCTLDIRFILTER *penmFilter )995 { 996 AssertPtrReturn(pCtx, VERR_INVALID_POINTER); 997 AssertReturn(pCtx->uNumParms == 4, VERR_INVALID_PARAMETER);996 GSTCTLDIRFILTER *penmFilter, GSTCTLFSOBJATTRADD *penmReadAttrAdd, uint32_t *pfReadFlags) 997 { 998 AssertPtrReturn(pCtx, VERR_INVALID_POINTER); 999 AssertReturn(pCtx->uNumParms == 6, VERR_INVALID_PARAMETER); 998 1000 999 1001 AssertPtrReturn(pszPath, VERR_INVALID_POINTER); … … 1001 1003 AssertPtrReturn(pfFlags, VERR_INVALID_POINTER); 1002 1004 AssertPtrReturn(penmFilter, VERR_INVALID_POINTER); 1005 AssertPtrReturn(penmReadAttrAdd, VERR_INVALID_POINTER); 1006 AssertPtrReturn(pfReadFlags, VERR_INVALID_POINTER); 1003 1007 1004 1008 int rc; … … 1011 1015 VbglHGCMParmUInt32Set(&Msg.filter, 0); 1012 1016 VbglHGCMParmUInt32Set(&Msg.flags, 0); 1017 VbglHGCMParmUInt32Set(&Msg.read_attr_add, 0); 1018 VbglHGCMParmUInt32Set(&Msg.read_flags, 0); 1013 1019 1014 1020 rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg)); … … 1018 1024 Msg.filter.GetUInt32((uint32_t *)penmFilter); 1019 1025 Msg.flags.GetUInt32(pfFlags); 1026 Msg.read_attr_add.GetUInt32((uint32_t *)penmReadAttrAdd); 1027 Msg.read_flags.GetUInt32(pfReadFlags); 1020 1028 } 1021 1029 } while (rc == VERR_INTERRUPTED && g_fVbglR3GuestCtrlHavePeekGetCancel); … … 1064 1072 * @param puHandle Where to return the directory handle to rewind. 1065 1073 * @param pcbDirEntry Where to return the directory entry size. 1066 * @param penmAddAttrib Where to return the additional attributes enumeration. 1067 * @param pfFlags Where to return the directory reading flags.. 1068 */ 1069 VBGLR3DECL(int) VbglR3GuestCtrlDirGetRead(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle, uint32_t *pcbDirEntry, 1070 uint32_t *penmAddAttrib, uint32_t *pfFlags) 1074 */ 1075 VBGLR3DECL(int) VbglR3GuestCtrlDirGetRead(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle, uint32_t *pcbDirEntry) 1071 1076 { 1072 1077 AssertPtrReturn(pCtx, VERR_INVALID_POINTER); … … 1075 1080 AssertPtrReturn(puHandle, VERR_INVALID_POINTER); 1076 1081 AssertPtrReturn(pcbDirEntry, VERR_INVALID_POINTER); 1077 AssertPtrReturn(penmAddAttrib, VERR_INVALID_POINTER);1078 AssertPtrReturn(pfFlags, VERR_INVALID_POINTER);1079 1082 1080 1083 int rc; … … 1086 1089 VbglHGCMParmUInt32Set(&Msg.handle, 0); 1087 1090 VbglHGCMParmUInt32Set(&Msg.max_entry_size, 0); 1088 VbglHGCMParmUInt32Set(&Msg.add_attributes, 0);1089 VbglHGCMParmUInt32Set(&Msg.flags, 0);1090 1091 1091 1092 rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg)); … … 1095 1096 Msg.handle.GetUInt32(puHandle); 1096 1097 Msg.max_entry_size.GetUInt32(pcbDirEntry); 1097 Msg.add_attributes.GetUInt32(penmAddAttrib);1098 Msg.flags.GetUInt32(pfFlags);1099 1098 } 1100 1099 } while (rc == VERR_INTERRUPTED && g_fVbglR3GuestCtrlHavePeekGetCancel); -
trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControl.h
r98817 r98818 80 80 /** Context ID. */ 81 81 uint32_t uContextID; 82 /** Flags for reading directory entries. */ 83 uint32_t fRead; 84 /** Additional attributes enumeration to use for reading directory entries. */ 85 GSTCTLFSOBJATTRADD enmReadAttrAdd; 82 86 } VBOXSERVICECTRLDIR; 83 87 /** Pointer to a guest directory. */ -
trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControlSession.cpp
r98817 r98818 1015 1015 AssertPtrReturn(pHostCtx, VERR_INVALID_POINTER); 1016 1016 1017 char szPath[RTPATH_MAX]; 1018 uint32_t fFlags; 1019 GSTCTLDIRFILTER enmFilter; 1020 uint32_t uHandle = 0; 1021 int rc = VbglR3GuestCtrlDirGetOpen(pHostCtx, szPath, sizeof(szPath), &fFlags, &enmFilter); 1017 char szPath[RTPATH_MAX]; 1018 uint32_t fFlags; 1019 GSTCTLDIRFILTER enmFilter; 1020 uint32_t uHandle = 0; 1021 uint32_t fReadFlags; 1022 GSTCTLFSOBJATTRADD enmAttrAdd; 1023 int rc = VbglR3GuestCtrlDirGetOpen(pHostCtx, szPath, sizeof(szPath), &fFlags, &enmFilter, &enmAttrAdd, &fReadFlags); 1022 1024 VGSvcVerbose(4, "[Dir %s]: fFlags=%#x, enmFilter=%#x, rc=%Rrc\n", szPath, fFlags, enmFilter, rc); 1023 1025 if (RT_SUCCESS(rc)) … … 1031 1033 if (!pDir->pszPathAbs) 1032 1034 rc = VERR_NO_MEMORY; 1035 1036 /* Save reading parameters for subsequent directory entry read calls later. */ 1037 pDir->fRead = fReadFlags; 1038 pDir->enmReadAttrAdd = enmAttrAdd; 1033 1039 1034 1040 if (RT_SUCCESS(rc)) … … 1138 1144 uint32_t uHandle; 1139 1145 size_t cbDirEntry = 0; 1140 GSTCTLFSOBJATTRADD enmAttrAdd;1141 uint32_t fFlags;1142 1146 GSTCTLDIRENTRYEX DirEntryEx; 1143 int rc = VbglR3GuestCtrlDirGetRead(pHostCtx, &uHandle, (uint32_t *)&cbDirEntry , (uint32_t *)&enmAttrAdd, &fFlags);1147 int rc = VbglR3GuestCtrlDirGetRead(pHostCtx, &uHandle, (uint32_t *)&cbDirEntry); 1144 1148 if (RT_SUCCESS(rc)) 1145 1149 { … … 1162 1166 PRTDIRENTRYEX pDirEntryExRuntime = (PRTDIRENTRYEX)&DirEntryEx; 1163 1167 1164 rc = RTDirReadEx(pDir->hDir, pDirEntryExRuntime, &cbDirEntry, (RTFSOBJATTRADD) enmAttrAdd, fFlags);1168 rc = RTDirReadEx(pDir->hDir, pDirEntryExRuntime, &cbDirEntry, (RTFSOBJATTRADD)pDir->enmReadAttrAdd, pDir->fRead); 1165 1169 1166 1170 /* Paranoia. */ -
trunk/src/VBox/Main/src-client/GuestDirectoryImpl.cpp
r98714 r98818 360 360 HGCMSvcSetU32(&paParms[i++], mData.mOpenInfo.menmFilter); 361 361 HGCMSvcSetU32(&paParms[i++], mData.mOpenInfo.mFlags); 362 HGCMSvcSetU32(&paParms[i++], GSTCTLFSOBJATTRADD_UNIX /* Implicit */); 363 HGCMSvcSetU32(&paParms[i++], GSTCTL_PATH_F_ON_LINK /* Ditto */ ); 362 364 363 365 alock.release(); /* Drop lock before sending. */ … … 769 771 770 772 /* Prepare HGCM call. */ 771 VBOXHGCMSVCPARM paParms[ 8];773 VBOXHGCMSVCPARM paParms[4]; 772 774 int i = 0; 773 775 HGCMSvcSetU32(&paParms[i++], pEvent->ContextID()); 774 776 HGCMSvcSetU32(&paParms[i++], mObjectID /* Guest directory handle */); 775 777 HGCMSvcSetU32(&paParms[i++], GSTCTL_DIRENTRY_MAX_SIZE); 776 HGCMSvcSetU32(&paParms[i++], GSTCTLFSOBJATTRADD_UNIX /* Implicit */);777 HGCMSvcSetU32(&paParms[i++], GSTCTL_PATH_F_ON_LINK);778 778 779 779 vrc = sendMessage(HOST_MSG_DIR_READ, i, paParms);
Note:
See TracChangeset
for help on using the changeset viewer.

