Index: /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFile.cpp
===================================================================
--- /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFile.cpp	(revision 79709)
+++ /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFile.cpp	(revision 79710)
@@ -307,4 +307,12 @@
                 {
                     rc = ERROR_OPEN_FAILED; //ERROR_FILE_EXISTS;
+                    break;
+                }
+                if (RTFS_IS_DIRECTORY(pReq->CreateParms.Info.Attr.fMode))
+                {
+                    LogFlow(("FS32_OPENCREATE: directory, closing and returning ERROR_ACCESS_DENIED!\n"));
+                    AssertCompile(RTASSERT_OFFSET_OF(VBOXSFCREATEREQ, CreateParms.Handle) > sizeof(VBOXSFCLOSEREQ)); /* no aliasing issues */
+                    VbglR0SfHostReqClose(pFolder->idHostRoot, (VBOXSFCLOSEREQ *)pReq, pReq->CreateParms.Handle);
+                    rc = ERROR_ACCESS_DENIED;
                     break;
                 }
Index: /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFind.cpp
===================================================================
--- /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFind.cpp	(revision 79709)
+++ /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFind.cpp	(revision 79710)
@@ -625,9 +625,10 @@
                                 pDataBuf->pEntry        = NULL;
                                 pDataBuf->pFilter       = pFilter;
-                                pDataBuf->fMustHaveAttribs   = (uint8_t)((fAttribs >> 8) & (RTFS_DOS_MASK_OS2 >> RTFS_DOS_SHIFT));
-                                pDataBuf->fExcludedAttribs   = (uint8_t)(~fAttribs
-                                                                         & (  (RTFS_DOS_MASK_OS2 & ~(RTFS_DOS_ARCHIVED | RTFS_DOS_READONLY)
-                                                                            >> RTFS_DOS_SHIFT)));
+                                pDataBuf->fMustHaveAttribs   = (uint8_t)(  (fAttribs >> 8)
+                                                                         & (FILE_READONLY | FILE_HIDDEN | FILE_SYSTEM | FILE_DIRECTORY | FILE_ARCHIVED));
+                                pDataBuf->fExcludedAttribs   = (uint8_t)(~fAttribs & (FILE_HIDDEN | FILE_SYSTEM | FILE_DIRECTORY));
                                 pDataBuf->fLongFilenames     = RT_BOOL(fAttribs & FF_ATTR_LONG_FILENAME);
+                                LogFlow(("FS32_FINDFIRST: fMustHaveAttribs=%#x fExcludedAttribs=%#x fLongFilenames=%d (fAttribs=%#x)\n",
+                                         pDataBuf->fMustHaveAttribs, pDataBuf->fExcludedAttribs, pDataBuf->fLongFilenames, fAttribs));
                                 pDataBuf->cMinLocalTimeDelta = vboxSfOs2GetLocalTimeDelta();
 
@@ -724,13 +725,10 @@
         case FI_LVL_STANDARD_EASIZE:
         case FI_LVL_STANDARD_EASIZE_64:
-            break;
-
         case FI_LVL_EAS_FROM_LIST:
         case FI_LVL_EAS_FROM_LIST_64:
-            Log(("FS32_FINDFIRST: FI_LVL_EAS_FROM_LIST[_64] -> ERROR_EAS_NOT_SUPPORTED\n"));
-            return ERROR_EAS_NOT_SUPPORTED;
+            break;
 
         default:
-            LogRel(("FS32_FINDFIRST: Unsupported info level %u!\n", uLevel));
+            LogRel(("FS32_FINDFROMNAME: Unsupported info level %u!\n", uLevel));
             return ERROR_INVALID_LEVEL;
     }
@@ -782,13 +780,10 @@
         case FI_LVL_STANDARD_EASIZE:
         case FI_LVL_STANDARD_EASIZE_64:
-            break;
-
         case FI_LVL_EAS_FROM_LIST:
         case FI_LVL_EAS_FROM_LIST_64:
-            Log(("FS32_FINDFIRST: FI_LVL_EAS_FROM_LIST[_64] -> ERROR_EAS_NOT_SUPPORTED\n"));
-            return ERROR_EAS_NOT_SUPPORTED;
+            break;
 
         default:
-            LogRel(("FS32_FINDFIRST: Unsupported info level %u!\n", uLevel));
+            LogRel(("FS32_FINDNEXT: Unsupported info level %u!\n", uLevel));
             return ERROR_INVALID_LEVEL;
     }
