Index: trunk/src/VBox/Main/src-client/GuestDirectoryImpl.cpp
===================================================================
--- trunk/src/VBox/Main/src-client/GuestDirectoryImpl.cpp	(revision 42844)
+++ trunk/src/VBox/Main/src-client/GuestDirectoryImpl.cpp	(revision 42846)
@@ -194,4 +194,5 @@
     uninit();
 
+    LogFlowThisFuncLeave();
     return S_OK;
 #endif /* VBOX_WITH_GUEST_CONTROL */
Index: trunk/src/VBox/Main/src-client/GuestFileImpl.cpp
===================================================================
--- trunk/src/VBox/Main/src-client/GuestFileImpl.cpp	(revision 42844)
+++ trunk/src/VBox/Main/src-client/GuestFileImpl.cpp	(revision 42846)
@@ -63,8 +63,8 @@
     mData.mSession = pSession;
     mData.mCreationMode = uCreationMode;
-    mData.mDisposition = getDispositionFromString(strDisposition);
+    mData.mDisposition = GuestFile::getDispositionFromString(strDisposition);
     mData.mFileName = strPath;
     mData.mInitialSize = 0;
-    mData.mOpenMode = getOpenModeFromString(strOpenMode);
+    mData.mOpenMode = GuestFile::getOpenModeFromString(strOpenMode);
     mData.mOffset = iOffset;
 
@@ -227,8 +227,10 @@
     ReturnComNotImplemented();
 #else
-    AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc();
-
-    ReturnComNotImplemented();
+    LogFlowThisFuncEnter();
+
+    uninit();
+
+    LogFlowThisFuncLeave();
+    return S_OK;
 #endif /* VBOX_WITH_GUEST_CONTROL */
 }
@@ -242,5 +244,32 @@
     if (FAILED(autoCaller.rc())) return autoCaller.rc();
 
-    ReturnComNotImplemented();
+    HRESULT hr = S_OK;
+
+    GuestFsObjData objData;
+    int vrc = mData.mSession->fileQueryInfoInternal(mData.mFileName, objData);
+    if (RT_SUCCESS(vrc))
+    {
+        ComObjPtr<GuestFsObjInfo> pFsObjInfo;
+        hr = pFsObjInfo.createObject();
+        if (FAILED(hr))
+            return VERR_COM_UNEXPECTED;
+
+        vrc = pFsObjInfo->init(objData);
+        if (RT_SUCCESS(rc))
+            hr = pFsObjInfo.queryInterfaceTo(aInfo);
+    }
+    else
+    {
+        switch (vrc)
+        {
+            /** @todo Add more errors here! */
+
+            default:
+               hr = setError(VBOX_E_IPRT_ERROR, tr("Querying file information failed: %Rrc"), vrc);
+               break;
+        }
+    }
+
+    return hr;
 #endif /* VBOX_WITH_GUEST_CONTROL */
 }
Index: trunk/src/VBox/Main/src-client/GuestProcessImpl.cpp
===================================================================
--- trunk/src/VBox/Main/src-client/GuestProcessImpl.cpp	(revision 42844)
+++ trunk/src/VBox/Main/src-client/GuestProcessImpl.cpp	(revision 42846)
@@ -1044,5 +1044,5 @@
 {
     LogFlowThisFunc(("aCmd=%s, aTimeoutMS=%RU32, fFlags=%x\n",
-                 mData.mProcess.mCommand.c_str(), mData.mProcess.mTimeoutMS, mData.mProcess.mFlags));
+                     mData.mProcess.mCommand.c_str(), mData.mProcess.mTimeoutMS, mData.mProcess.mFlags));
 
     /* Wait until the caller function (if kicked off by a thread)
@@ -1545,9 +1545,30 @@
     if (FAILED(autoCaller.rc())) return autoCaller.rc();
 
+    HRESULT hr = S_OK;
+
     int vrc = terminateProcess();
-    /** @todo Do setError() here. */
-    HRESULT hr = RT_SUCCESS(vrc) ? S_OK : VBOX_E_IPRT_ERROR;
-    LogFlowFuncLeaveRC(vrc);
-
+    if (RT_FAILURE(vrc))
+    {
+        switch (vrc)
+        {
+            case VERR_NOT_IMPLEMENTED:
+                ReturnComNotImplemented();
+                break; /* Never reached. */
+
+            case VERR_NOT_SUPPORTED:
+                hr = setError(VBOX_E_IPRT_ERROR,
+                              tr("Terminating process \"%s\" (PID %RU32) not supported by installed Guest Additions"),
+                              mData.mProcess.mCommand.c_str(), mData.mPID);
+                break;
+
+            default:
+                hr = setError(VBOX_E_IPRT_ERROR,
+                              tr("Terminating process \"%s\" (PID %RU32) failed: %Rrc"),
+                              mData.mProcess.mCommand.c_str(), mData.mPID, vrc);
+                break;
+        }
+    }
+
+    LogFlowFuncLeaveRC(vrc);
     return hr;
 #endif /* VBOX_WITH_GUEST_CONTROL */
Index: trunk/src/VBox/Main/src-client/GuestSessionImpl.cpp
===================================================================
--- trunk/src/VBox/Main/src-client/GuestSessionImpl.cpp	(revision 42844)
+++ trunk/src/VBox/Main/src-client/GuestSessionImpl.cpp	(revision 42846)
@@ -765,6 +765,4 @@
         return VERR_COM_UNEXPECTED;
 
-    /* Note: There will be a race between creating and getting/initing the directory
-             object here. */
     int rc = pFile->init(this /* Parent */,
                          strPath, strOpenMode, strDisposition, uCreationMode, iOffset);
@@ -818,4 +816,5 @@
     LogFlowThisFunc(("strPath=%s\n", strPath.c_str()));
 
+    /** @todo Merge this with IGuestFile::queryInfo(). */
     GuestProcessStartupInfo procInfo;
     procInfo.mName    = Utf8StrFmt(tr("Querying info for \"%s\""), strPath.c_str());
