Index: /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSF.cpp
===================================================================
--- /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSF.cpp	(revision 76714)
+++ /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSF.cpp	(revision 76715)
@@ -286,5 +286,5 @@
     /* Note! We won't get there while the folder is on the list. */
     LogRel(("vboxSfOs2ReleaseFolder: Destroying %p [%s]\n", pFolder, pFolder->szName));
-    vboxSfOs2HostReqUnmapFolderSimple(pFolder->hHostFolder.root);
+    vboxSfOs2HostReqUnmapFolderSimple(pFolder->idHostRoot);
     RT_ZERO(pFolder);
     RTMemFree(pFolder);
@@ -371,5 +371,5 @@
         pNew->cOpenSearches = 0;
         pNew->cDrives       = 0;
-        RT_ZERO(pNew->hHostFolder);
+        pNew->idHostRoot    = SHFL_ROOT_NIL;
         pNew->hVpb          = 0;
         pNew->cbNameAndTag  = pName->u16Length + (uint16_t)cbTag;
@@ -398,5 +398,5 @@
             if (RT_SUCCESS(rc))
             {
-                pNew->hHostFolder.root = pReq->Parms.id32Root.u.value32;
+                pNew->idHostRoot = pReq->Parms.id32Root.u.value32;
 
                 RTListAppend(&g_FolderHead, &pNew->ListEntry);
@@ -1364,5 +1364,5 @@
         pu->Open.Req.StrPath.String.utf16[2] = '\0';
 
-        int vrc = vboxSfOs2HostReqCreate(pFolder, &pu->Open.Req);
+        int vrc = vboxSfOs2HostReqCreate(pFolder->idHostRoot, &pu->Open.Req);
         LogFlow(("FS32_FSINFO: vboxSfOs2HostReqCreate -> %Rrc Result=%d Handle=%#RX64\n",
                  vrc, pu->Open.Req.CreateParms.Result, pu->Open.Req.CreateParms.Handle));
@@ -1373,5 +1373,5 @@
 
             RT_ZERO(pu->Info.Req);
-            vrc = vboxSfOs2HostReqQueryVolInfo(pFolder, &pu->Info.Req, hHandle);
+            vrc = vboxSfOs2HostReqQueryVolInfo(pFolder->idHostRoot, &pu->Info.Req, hHandle);
             if (RT_SUCCESS(vrc))
             {
@@ -1404,5 +1404,5 @@
             }
 
-            vrc = vboxSfOs2HostReqClose(pFolder, &pu->Close, hHandle);
+            vrc = vboxSfOs2HostReqClose(pFolder->idHostRoot, &pu->Close, hHandle);
             AssertRC(vrc);
         }
@@ -1480,5 +1480,5 @@
             pReq->CreateParms.CreateFlags = SHFL_CF_LOOKUP;
 
-            int vrc = vboxSfOs2HostReqCreate(pFolder, pReq);
+            int vrc = vboxSfOs2HostReqCreate(pFolder->idHostRoot, pReq);
             LogFlow(("FS32_CHDIR: vboxSfOs2HostReqCreate -> %Rrc Result=%d fMode=%#x\n",
                      vrc, pReq->CreateParms.Result, pReq->CreateParms.Info.Attr.fMode));
@@ -1554,5 +1554,5 @@
                                           | SHFL_CF_ACCESS_READ | SHFL_CF_ACCESS_DENYNONE;
 
-            int vrc = vboxSfOs2HostReqCreate(pFolder, pReq);
+            int vrc = vboxSfOs2HostReqCreate(pFolder->idHostRoot, pReq);
             LogFlow(("FS32_MKDIR: vboxSfOs2HostReqCreate -> %Rrc Result=%d fMode=%#x\n",
                      vrc, pReq->CreateParms.Result, pReq->CreateParms.Info.Attr.fMode));
@@ -1565,5 +1565,5 @@
                         {
                             AssertCompile(RTASSERT_OFFSET_OF(VBOXSFCREATEREQ, CreateParms.Handle) > sizeof(VBOXSFCLOSEREQ)); /* no aliasing issues */
-                            vrc = vboxSfOs2HostReqClose(pFolder, (VBOXSFCLOSEREQ *)pReq, pReq->CreateParms.Handle);
+                            vrc = vboxSfOs2HostReqClose(pFolder->idHostRoot, (VBOXSFCLOSEREQ *)pReq, pReq->CreateParms.Handle);
                             AssertRC(vrc);
                         }
@@ -1620,5 +1620,5 @@
     if (rc == NO_ERROR)
     {
-        int vrc = vboxSfOs2HostReqRemove(pFolder, pReq, SHFL_REMOVE_DIR);
+        int vrc = vboxSfOs2HostReqRemove(pFolder->idHostRoot, pReq, SHFL_REMOVE_DIR);
         LogFlow(("FS32_RMDIR: vboxSfOs2HostReqRemove -> %Rrc\n", rc));
         if (RT_SUCCESS(vrc))
@@ -1678,5 +1678,6 @@
                  * Note! Requires 6.0.0beta2+ or 5.2.24+ host for renaming files.
                  */
-                int vrc = vboxSfOs2HostReqRenameWithSrcBuf(pSrcFolder, pReq, pSrcFolderPath, SHFL_RENAME_FILE | SHFL_RENAME_DIR);
+                int vrc = vboxSfOs2HostReqRenameWithSrcBuf(pSrcFolder->idHostRoot, pReq, pSrcFolderPath,
+                                                           SHFL_RENAME_FILE | SHFL_RENAME_DIR);
                 if (RT_SUCCESS(vrc))
                     rc = NO_ERROR;
@@ -1717,5 +1718,5 @@
     if (rc == NO_ERROR)
     {
-        int vrc = vboxSfOs2HostReqRemove(pFolder, pReq, SHFL_REMOVE_FILE);
+        int vrc = vboxSfOs2HostReqRemove(pFolder->idHostRoot, pReq, SHFL_REMOVE_FILE);
         LogFlow(("FS32_DELETE: vboxSfOs2HostReqRemove -> %Rrc\n", rc));
         if (RT_SUCCESS(vrc))
@@ -1797,5 +1798,5 @@
     if (pReq)
     {
-        int vrc = vboxSfOs2HostReqSetObjInfoWithBuf(pFolder, pReq, hHostFile, pObjInfoBuf, offObjInfoInAlloc);
+        int vrc = vboxSfOs2HostReqSetObjInfoWithBuf(pFolder->idHostRoot, pReq, hHostFile, pObjInfoBuf, offObjInfoInAlloc);
         LogFlow(("vboxSfOs2SetFileInfo: vboxSfOs2HostReqSetObjInfoWithBuf -> %Rrc\n", vrc));
 
@@ -1828,5 +1829,5 @@
                                   | SHFL_CF_ACCESS_ATTR_READWRITE | SHFL_CF_ACCESS_DENYNONE | SHFL_CF_ACCESS_NONE;
 
-    int vrc = vboxSfOs2HostReqCreate(pFolder, pReq);
+    int vrc = vboxSfOs2HostReqCreate(pFolder->idHostRoot, pReq);
     LogFlow(("vboxSfOs2SetPathInfoWorker: vboxSfOs2HostReqCreate -> %Rrc Result=%d Handle=%#RX64 fMode=%#x\n",
              vrc, pReq->CreateParms.Result, pReq->CreateParms.Handle, pReq->CreateParms.Info.Attr.fMode));
@@ -1839,5 +1840,5 @@
         pReq->CreateParms.CreateFlags = SHFL_CF_DIRECTORY | SHFL_CF_ACT_OPEN_IF_EXISTS | SHFL_CF_ACT_FAIL_IF_NEW
                                       | SHFL_CF_ACCESS_ATTR_READWRITE | SHFL_CF_ACCESS_DENYNONE | SHFL_CF_ACCESS_NONE;
-        vrc = vboxSfOs2HostReqCreate(pFolder, pReq);
+        vrc = vboxSfOs2HostReqCreate(pFolder->idHostRoot, pReq);
         LogFlow(("vboxSfOs2SetPathInfoWorker: vboxSfOs2HostReqCreate#2 -> %Rrc Result=%d Handle=%#RX64 fMode=%#x\n",
                  vrc, pReq->CreateParms.Result, pReq->CreateParms.Handle, pReq->CreateParms.Info.Attr.fMode));
@@ -1857,5 +1858,5 @@
 
                     AssertCompile(RTASSERT_OFFSET_OF(VBOXSFCREATEREQ, CreateParms.Handle) > sizeof(VBOXSFCLOSEREQ)); /* no aliasing issues */
-                    vrc = vboxSfOs2HostReqClose(pFolder, (VBOXSFCLOSEREQ *)pReq, pReq->CreateParms.Handle);
+                    vrc = vboxSfOs2HostReqClose(pFolder->idHostRoot, (VBOXSFCLOSEREQ *)pReq, pReq->CreateParms.Handle);
                     AssertRC(vrc);
                 }
@@ -1908,5 +1909,5 @@
                 pReq->CreateParms.CreateFlags = SHFL_CF_LOOKUP;
 
-                int vrc = vboxSfOs2HostReqCreate(pFolder, pReq);
+                int vrc = vboxSfOs2HostReqCreate(pFolder->idHostRoot, pReq);
                 LogFlow(("FS32_FILEATTRIBUTE: vboxSfOs2HostReqCreate -> %Rrc Result=%d fMode=%#x\n",
                          vrc, pReq->CreateParms.Result, pReq->CreateParms.Info.Attr.fMode));
@@ -2213,5 +2214,5 @@
     pReq->CreateParms.CreateFlags = SHFL_CF_LOOKUP;
 
-    int vrc = vboxSfOs2HostReqCreate(pFolder, pReq);
+    int vrc = vboxSfOs2HostReqCreate(pFolder->idHostRoot, pReq);
     LogFlow(("FS32_PATHINFO: vboxSfOs2HostReqCreate -> %Rrc Result=%d fMode=%#x\n",
              vrc, pReq->CreateParms.Result, pReq->CreateParms.Info.Attr.fMode));
Index: /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFile.cpp
===================================================================
--- /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFile.cpp	(revision 76714)
+++ /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFile.cpp	(revision 76715)
@@ -233,5 +233,5 @@
      * Try open the file.
      */
-    int vrc = vboxSfOs2HostReqCreate(pFolder, pReq);
+    int vrc = vboxSfOs2HostReqCreate(pFolder->idHostRoot, pReq);
     LogFlow(("FS32_OPENCREATE: vboxSfOs2HostReqCreate -> %Rrc Result=%d fMode=%#x\n",
              vrc, pReq->CreateParms.Result, pReq->CreateParms.Info.Attr.fMode));
@@ -282,5 +282,5 @@
                     LogRel(("FS32_OPENCREATE: cbObject=%#RX64 no OPEN_FLAGS_LARGEFILE (%s)\n", pReq->CreateParms.Info.cbObject, pszName));
                     AssertCompile(RTASSERT_OFFSET_OF(VBOXSFCREATEREQ, CreateParms.Handle) > sizeof(VBOXSFCLOSEREQ)); /* no aliasing issues */
-                    vboxSfOs2HostReqClose(pFolder, (VBOXSFCLOSEREQ *)pReq, pReq->CreateParms.Handle);
+                    vboxSfOs2HostReqClose(pFolder->idHostRoot, (VBOXSFCLOSEREQ *)pReq, pReq->CreateParms.Handle);
                     rc = ERROR_ACCESS_DENIED;
                 }
@@ -335,5 +335,5 @@
     RT_NOREF(fIoFlags);
 
-    int vrc = vboxSfOs2HostReqCloseSimple(pFolder, pSfFsd->hHostFile);
+    int vrc = vboxSfOs2HostReqCloseSimple(pFolder->idHostRoot, pSfFsd->hHostFile);
     AssertRC(vrc);
 
@@ -374,5 +374,5 @@
         || (pSfFsi->sfi_mode & SFMODE_OPEN_ACCESS) == SFMODE_OPEN_READWRITE)
     {
-        int vrc = vboxSfOs2HostReqFlushSimple(pFolder, pSfFsd->hHostFile);
+        int vrc = vboxSfOs2HostReqFlushSimple(pFolder->idHostRoot, pSfFsd->hHostFile);
         if (RT_FAILURE(vrc))
         {
@@ -435,5 +435,5 @@
                 return ERROR_NOT_ENOUGH_MEMORY;
 
-            int vrc = vboxSfOs2HostReqQueryObjInfo(pFolder, pReq, pSfFsd->hHostFile);
+            int vrc = vboxSfOs2HostReqQueryObjInfo(pFolder->idHostRoot, pReq, pSfFsd->hHostFile);
             if (RT_SUCCESS(vrc))
             {
@@ -813,5 +813,5 @@
                                     SHFL_FN_INFORMATION, SHFL_CPARMS_INFORMATION, sizeof(*pReq));
         pReq->Parms.id32Root.type               = VMMDevHGCMParmType_32bit;
-        pReq->Parms.id32Root.u.value32          = pFolder->hHostFolder.root;
+        pReq->Parms.id32Root.u.value32          = pFolder->idHostRoot;
         pReq->Parms.u64Handle.type              = VMMDevHGCMParmType_64bit;
         pReq->Parms.u64Handle.u.value64         = pSfFsd->hHostFile;
@@ -858,5 +858,5 @@
     if (pReq)
     {
-        int vrc = vboxSfOs2HostReqQueryObjInfo(pFolder, pReq, pSfFsd->hHostFile);
+        int vrc = vboxSfOs2HostReqQueryObjInfo(pFolder->idHostRoot, pReq, pSfFsd->hHostFile);
         if (RT_SUCCESS(vrc))
         {
@@ -1047,5 +1047,5 @@
          * Call the host.
          */
-        int vrc = vboxSfOs2HostReqSetFileSizeSimple(pFolder, pSfFsd->hHostFile, cbFile);
+        int vrc = vboxSfOs2HostReqSetFileSizeSimple(pFolder->idHostRoot, pSfFsd->hHostFile, cbFile);
         if (RT_SUCCESS(vrc))
         {
@@ -1166,5 +1166,5 @@
         {
             APIRET rc;
-            int vrc = vboxSfOs2HostReqReadEmbedded(pFolder, pReq, pSfFsd->hHostFile, offRead, cbToRead);
+            int vrc = vboxSfOs2HostReqReadEmbedded(pFolder->idHostRoot, pReq, pSfFsd->hHostFile, offRead, cbToRead);
             if (RT_SUCCESS(vrc))
             {
@@ -1223,5 +1223,6 @@
         {
             APIRET rc;
-            int vrc = vboxSfOs2HostReqReadContig(pFolder, pReq, pSfFsd->hHostFile, offRead, cbToRead, pvBuf, GCPhys);
+            int vrc = vboxSfOs2HostReqReadContig(pFolder->idHostRoot, pReq, pSfFsd->hHostFile,
+                                                 offRead, cbToRead, pvBuf, GCPhys);
             if (RT_SUCCESS(vrc))
             {
@@ -1265,5 +1266,5 @@
 
         APIRET rc;
-        int vrc = vboxSfOs2HostReqReadPgLst(pFolder, pReq, pSfFsd->hHostFile, offRead, cbToRead, cPages);
+        int vrc = vboxSfOs2HostReqReadPgLst(pFolder->idHostRoot, pReq, pSfFsd->hHostFile, offRead, cbToRead, cPages);
         if (RT_SUCCESS(vrc))
         {
@@ -1336,5 +1337,5 @@
             if (rc == NO_ERROR)
             {
-                int vrc = vboxSfOs2HostReqWriteEmbedded(pFolder, pReq, pSfFsd->hHostFile, offWrite, cbToWrite);
+                int vrc = vboxSfOs2HostReqWriteEmbedded(pFolder->idHostRoot, pReq, pSfFsd->hHostFile, offWrite, cbToWrite);
                 if (RT_SUCCESS(vrc))
                 {
@@ -1393,5 +1394,6 @@
             {
                 APIRET rc;
-                int vrc = vboxSfOs2HostReqWriteContig(pFolder, pReq, pSfFsd->hHostFile, offWrite, cbToWrite, pvBuf, GCPhys);
+                int vrc = vboxSfOs2HostReqWriteContig(pFolder->idHostRoot, pReq, pSfFsd->hHostFile,
+                                                      offWrite, cbToWrite, pvBuf, GCPhys);
                 if (RT_SUCCESS(vrc))
                 {
@@ -1431,5 +1433,5 @@
 
         APIRET rc;
-        int vrc = vboxSfOs2HostReqWritePgLst(pFolder, pReq, pSfFsd->hHostFile, offWrite, cbToWrite, cPages);
+        int vrc = vboxSfOs2HostReqWritePgLst(pFolder->idHostRoot, pReq, pSfFsd->hHostFile, offWrite, cbToWrite, cPages);
         if (RT_SUCCESS(vrc))
         {
Index: /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFind.cpp
===================================================================
--- /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFind.cpp	(revision 76714)
+++ /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFind.cpp	(revision 76715)
@@ -234,5 +234,5 @@
         {
             pDataBuf->pEntry = pEntry = pDataBuf->pBuf;
-            int vrc = vboxSfOs2HostReqListDir(pFolder, &pDataBuf->Req, pFsFsd->hHostDir, pDataBuf->pFilter,
+            int vrc = vboxSfOs2HostReqListDir(pFolder->idHostRoot, &pDataBuf->Req, pFsFsd->hHostDir, pDataBuf->pFilter,
                                               /*cMaxMatches == 1 ? SHFL_LIST_RETURN_ONE :*/ 0, pDataBuf->pBuf, pDataBuf->cbBuf);
             if (RT_SUCCESS(vrc))
@@ -601,5 +601,5 @@
                                               | SHFL_CF_ACCESS_READ | SHFL_CF_ACCESS_ATTR_READ | SHFL_CF_ACCESS_DENYNONE;
 
-                int vrc = vboxSfOs2HostReqCreate(pFolder, pReq);
+                int vrc = vboxSfOs2HostReqCreate(pFolder->idHostRoot, pReq);
                 LogFlow(("FS32_FINDFIRST: vboxSfOs2HostReqCreate(%ls) -> %Rrc Result=%d fMode=%#x hHandle=%#RX64\n",
                          pStrFolderPath->String.utf16, vrc, pReq->CreateParms.Result, pReq->CreateParms.Info.Attr.fMode,
@@ -649,5 +649,5 @@
                                 {
                                     AssertCompile(sizeof(VBOXSFCLOSEREQ) < sizeof(*pReq));
-                                    vrc = vboxSfOs2HostReqClose(pFolder, (VBOXSFCLOSEREQ *)pReq, pFsFsd->hHostDir);
+                                    vrc = vboxSfOs2HostReqClose(pFolder->idHostRoot, (VBOXSFCLOSEREQ *)pReq, pFsFsd->hHostDir);
                                     AssertRC(vrc);
                                     pFsFsd->u32Magic = ~VBOXSFFS_MAGIC;
@@ -826,5 +826,5 @@
     if (pFsFsd->hHostDir != SHFL_HANDLE_NIL)
     {
-        int vrc = vboxSfOs2HostReqCloseSimple(pFolder, pFsFsd->hHostDir);
+        int vrc = vboxSfOs2HostReqCloseSimple(pFolder->idHostRoot, pFsFsd->hHostDir);
         AssertRC(vrc);
     }
Index: /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFInternal.h
===================================================================
--- /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFInternal.h	(revision 76714)
+++ /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFInternal.h	(revision 76715)
@@ -77,5 +77,5 @@
 
     /** The host folder handle. */
-    VBGLSFMAP           hHostFolder;
+    SHFLROOT            idHostRoot;
 
     /** OS/2 volume handle. */
@@ -369,5 +369,5 @@
  * SHFL_FN_CREATE request.
  */
-DECLINLINE(int) vboxSfOs2HostReqCreate(PVBOXSFFOLDER pFolder, VBOXSFCREATEREQ *pReq)
+DECLINLINE(int) vboxSfOs2HostReqCreate(SHFLROOT idRoot, VBOXSFCREATEREQ *pReq)
 {
     uint32_t const cbReq = g_fHostFeatures & VMMDEV_HVF_HGCM_EMBEDDED_BUFFERS
@@ -377,6 +377,6 @@
                                 SHFL_FN_CREATE, SHFL_CPARMS_CREATE, cbReq);
 
-    pReq->Parms.id32Root.type                   = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32              = pFolder->hHostFolder.root;
+    pReq->Parms.id32Root.type                       = VMMDevHGCMParmType_32bit;
+    pReq->Parms.id32Root.u.value32                  = idRoot;
 
     if (g_fHostFeatures & VMMDEV_HVF_HGCM_EMBEDDED_BUFFERS)
@@ -421,14 +421,14 @@
  * SHFL_FN_CLOSE request.
  */
-DECLINLINE(int) vboxSfOs2HostReqClose(PVBOXSFFOLDER pFolder, VBOXSFCLOSEREQ *pReq, uint64_t hHostFile)
+DECLINLINE(int) vboxSfOs2HostReqClose(SHFLROOT idRoot, VBOXSFCLOSEREQ *pReq, uint64_t hHostFile)
 {
     VBGLIOCIDCHGCMFASTCALL_INIT(&pReq->Hdr, VbglR0PhysHeapGetPhysAddr(pReq), &pReq->Call, g_SfClient.idClient,
                                 SHFL_FN_CLOSE, SHFL_CPARMS_CLOSE, sizeof(*pReq));
 
-    pReq->Parms.id32Root.type                   = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32              = pFolder->hHostFolder.root;
-
-    pReq->Parms.u64Handle.type                  = VMMDevHGCMParmType_64bit;
-    pReq->Parms.u64Handle.u.value64             = hHostFile;
+    pReq->Parms.id32Root.type       = VMMDevHGCMParmType_32bit;
+    pReq->Parms.id32Root.u.value32  = idRoot;
+
+    pReq->Parms.u64Handle.type      = VMMDevHGCMParmType_64bit;
+    pReq->Parms.u64Handle.u.value64 = hHostFile;
 
     int vrc = VbglR0HGCMFastCall(g_SfClient.handle, &pReq->Hdr, sizeof(*pReq));
@@ -441,10 +441,10 @@
  * SHFL_FN_CLOSE request, allocate request buffer.
  */
-DECLINLINE(int) vboxSfOs2HostReqCloseSimple(PVBOXSFFOLDER pFolder, uint64_t hHostFile)
+DECLINLINE(int) vboxSfOs2HostReqCloseSimple(SHFLROOT idRoot, uint64_t hHostFile)
 {
     VBOXSFCLOSEREQ *pReq = (VBOXSFCLOSEREQ *)VbglR0PhysHeapAlloc(sizeof(*pReq));
     if (pReq)
     {
-        int vrc = vboxSfOs2HostReqClose(pFolder, pReq, hHostFile);
+        int vrc = vboxSfOs2HostReqClose(idRoot, pReq, hHostFile);
         VbglR0PhysHeapFree(pReq);
         return vrc;
@@ -466,5 +466,5 @@
  * SHFL_FN_INFORMATION[SHFL_INFO_VOLUME | SHFL_INFO_GET] request.
  */
-DECLINLINE(int) vboxSfOs2HostReqQueryVolInfo(PVBOXSFFOLDER pFolder, VBOXSFVOLINFOREQ *pReq, uint64_t hHostFile)
+DECLINLINE(int) vboxSfOs2HostReqQueryVolInfo(SHFLROOT idRoot, VBOXSFVOLINFOREQ *pReq, uint64_t hHostFile)
 {
     uint32_t const cbReq = g_fHostFeatures & VMMDEV_HVF_HGCM_EMBEDDED_BUFFERS
@@ -474,5 +474,5 @@
 
     pReq->Parms.id32Root.type                   = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32              = pFolder->hHostFolder.root;
+    pReq->Parms.id32Root.u.value32              = idRoot;
 
     pReq->Parms.u64Handle.type                  = VMMDevHGCMParmType_64bit;
@@ -518,5 +518,5 @@
  * SHFL_FN_INFORMATION[SHFL_INFO_GET | SHFL_INFO_FILE] request.
  */
-DECLINLINE(int) vboxSfOs2HostReqQueryObjInfo(PVBOXSFFOLDER pFolder, VBOXSFOBJINFOREQ *pReq, uint64_t hHostFile)
+DECLINLINE(int) vboxSfOs2HostReqQueryObjInfo(SHFLROOT idRoot, VBOXSFOBJINFOREQ *pReq, uint64_t hHostFile)
 {
     uint32_t const cbReq = g_fHostFeatures & VMMDEV_HVF_HGCM_EMBEDDED_BUFFERS
@@ -526,5 +526,5 @@
 
     pReq->Parms.id32Root.type                   = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32              = pFolder->hHostFolder.root;
+    pReq->Parms.id32Root.u.value32              = idRoot;
 
     pReq->Parms.u64Handle.type                  = VMMDevHGCMParmType_64bit;
@@ -561,5 +561,5 @@
  * SHFL_FN_INFORMATION[SHFL_INFO_SET | SHFL_INFO_FILE] request.
  */
-DECLINLINE(int) vboxSfOs2HostReqSetObjInfo(PVBOXSFFOLDER pFolder, VBOXSFOBJINFOREQ *pReq, uint64_t hHostFile)
+DECLINLINE(int) vboxSfOs2HostReqSetObjInfo(SHFLROOT idRoot, VBOXSFOBJINFOREQ *pReq, uint64_t hHostFile)
 {
     uint32_t const cbReq = g_fHostFeatures & VMMDEV_HVF_HGCM_EMBEDDED_BUFFERS
@@ -569,5 +569,5 @@
 
     pReq->Parms.id32Root.type                   = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32              = pFolder->hHostFolder.root;
+    pReq->Parms.id32Root.u.value32              = idRoot;
 
     pReq->Parms.u64Handle.type                  = VMMDevHGCMParmType_64bit;
@@ -614,5 +614,5 @@
  * buffer (on the physical heap).
  */
-DECLINLINE(int) vboxSfOs2HostReqSetObjInfoWithBuf(PVBOXSFFOLDER pFolder, VBOXSFOBJINFOWITHBUFREQ *pReq, uint64_t hHostFile,
+DECLINLINE(int) vboxSfOs2HostReqSetObjInfoWithBuf(SHFLROOT idRoot, VBOXSFOBJINFOWITHBUFREQ *pReq, uint64_t hHostFile,
                                                   PSHFLFSOBJINFO pObjInfo, uint32_t offObjInfoInAlloc)
 {
@@ -621,5 +621,5 @@
 
     pReq->Parms.id32Root.type               = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32          = pFolder->hHostFolder.root;
+    pReq->Parms.id32Root.u.value32          = idRoot;
 
     pReq->Parms.u64Handle.type              = VMMDevHGCMParmType_64bit;
@@ -669,5 +669,5 @@
  * SHFL_FN_REMOVE request.
  */
-DECLINLINE(int) vboxSfOs2HostReqRemove(PVBOXSFFOLDER pFolder, VBOXSFREMOVEREQ *pReq, uint32_t fFlags)
+DECLINLINE(int) vboxSfOs2HostReqRemove(SHFLROOT idRoot, VBOXSFREMOVEREQ *pReq, uint32_t fFlags)
 {
     uint32_t const cbReq = RT_UOFFSETOF(VBOXSFREMOVEREQ, StrPath.String)
@@ -677,5 +677,5 @@
 
     pReq->Parms.id32Root.type                   = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32              = pFolder->hHostFolder.root;
+    pReq->Parms.id32Root.u.value32              = idRoot;
 
     if (g_fHostFeatures & VMMDEV_HVF_HGCM_EMBEDDED_BUFFERS)
@@ -716,5 +716,5 @@
  * SHFL_FN_REMOVE request.
  */
-DECLINLINE(int) vboxSfOs2HostReqRenameWithSrcBuf(PVBOXSFFOLDER pFolder, VBOXSFRENAMEWITHSRCBUFREQ *pReq,
+DECLINLINE(int) vboxSfOs2HostReqRenameWithSrcBuf(SHFLROOT idRoot, VBOXSFRENAMEWITHSRCBUFREQ *pReq,
                                                  PSHFLSTRING pSrcStr, uint32_t fFlags)
 {
@@ -725,5 +725,5 @@
 
     pReq->Parms.id32Root.type                       = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32                  = pFolder->hHostFolder.root;
+    pReq->Parms.id32Root.u.value32                  = idRoot;
 
     if (g_fHostFeatures & VMMDEV_HVF_HGCM_CONTIGUOUS_PAGE_LIST)
@@ -782,14 +782,14 @@
  * SHFL_FN_FLUSH request.
  */
-DECLINLINE(int) vboxSfOs2HostReqFlush(PVBOXSFFOLDER pFolder, VBOXSFFLUSHREQ *pReq, uint64_t hHostFile)
+DECLINLINE(int) vboxSfOs2HostReqFlush(SHFLROOT idRoot, VBOXSFFLUSHREQ *pReq, uint64_t hHostFile)
 {
     VBGLIOCIDCHGCMFASTCALL_INIT(&pReq->Hdr, VbglR0PhysHeapGetPhysAddr(pReq), &pReq->Call, g_SfClient.idClient,
                                 SHFL_FN_FLUSH, SHFL_CPARMS_FLUSH, sizeof(*pReq));
 
-    pReq->Parms.id32Root.type                   = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32              = pFolder->hHostFolder.root;
-
-    pReq->Parms.u64Handle.type                  = VMMDevHGCMParmType_64bit;
-    pReq->Parms.u64Handle.u.value64             = hHostFile;
+    pReq->Parms.id32Root.type       = VMMDevHGCMParmType_32bit;
+    pReq->Parms.id32Root.u.value32  = idRoot;
+
+    pReq->Parms.u64Handle.type      = VMMDevHGCMParmType_64bit;
+    pReq->Parms.u64Handle.u.value64 = hHostFile;
 
     int vrc = VbglR0HGCMFastCall(g_SfClient.handle, &pReq->Hdr, sizeof(*pReq));
@@ -802,10 +802,10 @@
  * SHFL_FN_FLUSH request, allocate request buffer.
  */
-DECLINLINE(int) vboxSfOs2HostReqFlushSimple(PVBOXSFFOLDER pFolder, uint64_t hHostFile)
+DECLINLINE(int) vboxSfOs2HostReqFlushSimple(SHFLROOT idRoot, uint64_t hHostFile)
 {
     VBOXSFFLUSHREQ *pReq = (VBOXSFFLUSHREQ *)VbglR0PhysHeapAlloc(sizeof(*pReq));
     if (pReq)
     {
-        int vrc = vboxSfOs2HostReqFlush(pFolder, pReq, hHostFile);
+        int vrc = vboxSfOs2HostReqFlush(idRoot, pReq, hHostFile);
         VbglR0PhysHeapFree(pReq);
         return vrc;
@@ -826,5 +826,5 @@
  * SHFL_FN_SET_FILE_SIZE request.
  */
-DECLINLINE(int) vboxSfOs2HostReqSetFileSize(PVBOXSFFOLDER pFolder, VBOXSFSETFILESIZEREQ *pReq,
+DECLINLINE(int) vboxSfOs2HostReqSetFileSize(SHFLROOT idRoot, VBOXSFSETFILESIZEREQ *pReq,
                                             uint64_t hHostFile, uint64_t cbNewSize)
 {
@@ -832,12 +832,12 @@
                                 SHFL_FN_SET_FILE_SIZE, SHFL_CPARMS_SET_FILE_SIZE, sizeof(*pReq));
 
-    pReq->Parms.id32Root.type                   = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32              = pFolder->hHostFolder.root;
-
-    pReq->Parms.u64Handle.type                  = VMMDevHGCMParmType_64bit;
-    pReq->Parms.u64Handle.u.value64             = hHostFile;
-
-    pReq->Parms.cb64NewSize.type                = VMMDevHGCMParmType_64bit;
-    pReq->Parms.cb64NewSize.u.value64           = cbNewSize;
+    pReq->Parms.id32Root.type           = VMMDevHGCMParmType_32bit;
+    pReq->Parms.id32Root.u.value32      = idRoot;
+
+    pReq->Parms.u64Handle.type          = VMMDevHGCMParmType_64bit;
+    pReq->Parms.u64Handle.u.value64     = hHostFile;
+
+    pReq->Parms.cb64NewSize.type        = VMMDevHGCMParmType_64bit;
+    pReq->Parms.cb64NewSize.u.value64   = cbNewSize;
 
     int vrc = VbglR0HGCMFastCall(g_SfClient.handle, &pReq->Hdr, sizeof(*pReq));
@@ -850,10 +850,10 @@
  * SHFL_FN_SET_FILE_SIZE request, allocate request buffer.
  */
-DECLINLINE(int) vboxSfOs2HostReqSetFileSizeSimple(PVBOXSFFOLDER pFolder, uint64_t hHostFile, uint64_t cbNewSize)
+DECLINLINE(int) vboxSfOs2HostReqSetFileSizeSimple(SHFLROOT idRoot, uint64_t hHostFile, uint64_t cbNewSize)
 {
     VBOXSFSETFILESIZEREQ *pReq = (VBOXSFSETFILESIZEREQ *)VbglR0PhysHeapAlloc(sizeof(*pReq));
     if (pReq)
     {
-        int vrc = vboxSfOs2HostReqSetFileSize(pFolder, pReq, hHostFile, cbNewSize);
+        int vrc = vboxSfOs2HostReqSetFileSize(idRoot, pReq, hHostFile, cbNewSize);
         VbglR0PhysHeapFree(pReq);
         return vrc;
@@ -875,5 +875,5 @@
  * SHFL_FN_READ request using embedded data buffer.
  */
-DECLINLINE(int) vboxSfOs2HostReqReadEmbedded(PVBOXSFFOLDER pFolder, VBOXSFREADEMBEDDEDREQ *pReq, uint64_t hHostFile,
+DECLINLINE(int) vboxSfOs2HostReqReadEmbedded(SHFLROOT idRoot, VBOXSFREADEMBEDDEDREQ *pReq, uint64_t hHostFile,
                                              uint64_t offRead, uint32_t cbToRead)
 {
@@ -884,5 +884,5 @@
 
     pReq->Parms.id32Root.type               = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32          = pFolder->hHostFolder.root;
+    pReq->Parms.id32Root.u.value32          = idRoot;
 
     pReq->Parms.u64Handle.type              = VMMDevHGCMParmType_64bit;
@@ -928,5 +928,5 @@
  * SHFL_FN_READ request using page list for data buffer (caller populated).
  */
-DECLINLINE(int) vboxSfOs2HostReqReadPgLst(PVBOXSFFOLDER pFolder, VBOXSFREADPGLSTREQ *pReq, uint64_t hHostFile,
+DECLINLINE(int) vboxSfOs2HostReqReadPgLst(SHFLROOT idRoot, VBOXSFREADPGLSTREQ *pReq, uint64_t hHostFile,
                                           uint64_t offRead, uint32_t cbToRead, uint32_t cPages)
 {
@@ -936,5 +936,5 @@
 
     pReq->Parms.id32Root.type               = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32          = pFolder->hHostFolder.root;
+    pReq->Parms.id32Root.u.value32          = idRoot;
 
     pReq->Parms.u64Handle.type              = VMMDevHGCMParmType_64bit;
@@ -966,5 +966,5 @@
  * SHFL_FN_READ request using a physically contiguous buffer.
  */
-DECLINLINE(int) vboxSfOs2HostReqReadContig(PVBOXSFFOLDER pFolder, VBOXSFREADPGLSTREQ *pReq, uint64_t hHostFile,
+DECLINLINE(int) vboxSfOs2HostReqReadContig(SHFLROOT idRoot, VBOXSFREADPGLSTREQ *pReq, uint64_t hHostFile,
                                           uint64_t offRead, uint32_t cbToRead, void *pvBuffer, RTGCPHYS64 PhysBuffer)
 {
@@ -973,5 +973,5 @@
 
     pReq->Parms.id32Root.type               = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32          = pFolder->hHostFolder.root;
+    pReq->Parms.id32Root.u.value32          = idRoot;
 
     pReq->Parms.u64Handle.type              = VMMDevHGCMParmType_64bit;
@@ -1021,5 +1021,5 @@
  * SHFL_FN_WRITE request using embedded data buffer.
  */
-DECLINLINE(int) vboxSfOs2HostReqWriteEmbedded(PVBOXSFFOLDER pFolder, VBOXSFWRITEEMBEDDEDREQ *pReq, uint64_t hHostFile,
+DECLINLINE(int) vboxSfOs2HostReqWriteEmbedded(SHFLROOT idRoot, VBOXSFWRITEEMBEDDEDREQ *pReq, uint64_t hHostFile,
                                               uint64_t offWrite, uint32_t cbToWrite)
 {
@@ -1030,5 +1030,5 @@
 
     pReq->Parms.id32Root.type               = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32          = pFolder->hHostFolder.root;
+    pReq->Parms.id32Root.u.value32          = idRoot;
 
     pReq->Parms.u64Handle.type              = VMMDevHGCMParmType_64bit;
@@ -1074,5 +1074,5 @@
  * SHFL_FN_WRITE request using page list for data buffer (caller populated).
  */
-DECLINLINE(int) vboxSfOs2HostReqWritePgLst(PVBOXSFFOLDER pFolder, VBOXSFWRITEPGLSTREQ *pReq, uint64_t hHostFile,
+DECLINLINE(int) vboxSfOs2HostReqWritePgLst(SHFLROOT idRoot, VBOXSFWRITEPGLSTREQ *pReq, uint64_t hHostFile,
                                            uint64_t offWrite, uint32_t cbToWrite, uint32_t cPages)
 {
@@ -1082,5 +1082,5 @@
 
     pReq->Parms.id32Root.type               = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32          = pFolder->hHostFolder.root;
+    pReq->Parms.id32Root.u.value32          = idRoot;
 
     pReq->Parms.u64Handle.type              = VMMDevHGCMParmType_64bit;
@@ -1112,5 +1112,5 @@
  * SHFL_FN_WRITE request using a physically contiguous buffer.
  */
-DECLINLINE(int) vboxSfOs2HostReqWriteContig(PVBOXSFFOLDER pFolder, VBOXSFWRITEPGLSTREQ *pReq, uint64_t hHostFile,
+DECLINLINE(int) vboxSfOs2HostReqWriteContig(SHFLROOT idRoot, VBOXSFWRITEPGLSTREQ *pReq, uint64_t hHostFile,
                                             uint64_t offWrite, uint32_t cbToWrite, void const *pvBuffer, RTGCPHYS64 PhysBuffer)
 {
@@ -1119,5 +1119,5 @@
 
     pReq->Parms.id32Root.type               = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32          = pFolder->hHostFolder.root;
+    pReq->Parms.id32Root.u.value32          = idRoot;
 
     pReq->Parms.u64Handle.type              = VMMDevHGCMParmType_64bit;
@@ -1158,5 +1158,5 @@
  * both allocated on the physical heap.
  */
-DECLINLINE(int) vboxSfOs2HostReqListDir(PVBOXSFFOLDER pFolder, VBOXSFLISTDIRREQ *pReq, uint64_t hHostDir,
+DECLINLINE(int) vboxSfOs2HostReqListDir(SHFLROOT idRoot, VBOXSFLISTDIRREQ *pReq, uint64_t hHostDir,
                                         PSHFLSTRING pFilter, uint32_t fFlags, PSHFLDIRINFO pBuffer, uint32_t cbBuffer)
 {
@@ -1165,5 +1165,5 @@
 
     pReq->Parms.id32Root.type                       = VMMDevHGCMParmType_32bit;
-    pReq->Parms.id32Root.u.value32                  = pFolder->hHostFolder.root;
+    pReq->Parms.id32Root.u.value32                  = idRoot;
 
     pReq->Parms.u64Handle.type                      = VMMDevHGCMParmType_64bit;
