VirtualBox

source: vbox/trunk/src/VBox/Main/include/GuestDirectoryImpl.h@ 84207

Last change on this file since 84207 was 83489, checked in by vboxsync, 5 years ago

Guest Control/Main: Fixed IGuestSession::directoryOpen() API to fail if a guest directory does not exist . bugref:9320

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.9 KB
Line 
1/* $Id: GuestDirectoryImpl.h 83489 2020-03-30 16:38:23Z vboxsync $ */
2/** @file
3 * VirtualBox Main - Guest directory handling implementation.
4 */
5
6/*
7 * Copyright (C) 2012-2020 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18#ifndef MAIN_INCLUDED_GuestDirectoryImpl_h
19#define MAIN_INCLUDED_GuestDirectoryImpl_h
20#ifndef RT_WITHOUT_PRAGMA_ONCE
21# pragma once
22#endif
23
24#include "GuestDirectoryWrap.h"
25#include "GuestFsObjInfoImpl.h"
26#include "GuestProcessImpl.h"
27
28class GuestSession;
29
30/**
31 * TODO
32 */
33class ATL_NO_VTABLE GuestDirectory :
34 public GuestDirectoryWrap,
35 public GuestObject
36{
37public:
38 /** @name COM and internal init/term/mapping cruft.
39 * @{ */
40 DECLARE_EMPTY_CTOR_DTOR(GuestDirectory)
41
42 int init(Console *pConsole, GuestSession *pSession, ULONG aObjectID, const GuestDirectoryOpenInfo &openInfo);
43 void uninit(void);
44
45 HRESULT FinalConstruct(void);
46 void FinalRelease(void);
47 /** @} */
48
49public:
50 /** @name Implemented virtual methods from GuestObject.
51 * @{ */
52 int i_callbackDispatcher(PVBOXGUESTCTRLHOSTCBCTX pCbCtx, PVBOXGUESTCTRLHOSTCALLBACK pSvcCb);
53 int i_onUnregister(void);
54 int i_onSessionStatusChange(GuestSessionStatus_T enmSessionStatus);
55 /** @} */
56
57public:
58 /** @name Public internal methods.
59 * @{ */
60 int i_closeInternal(int *pGuestRc);
61 int i_read(ComObjPtr<GuestFsObjInfo> &fsObjInfo, int *pGuestRc);
62 int i_readInternal(GuestFsObjData &objData, int *prcGuest);
63 /** @} */
64
65public:
66 /** @name Public static internal methods.
67 * @{ */
68 static Utf8Str i_guestErrorToString(int guestRc);
69 static HRESULT i_setErrorExternal(VirtualBoxBase *pInterface, int guestRc);
70 /** @} */
71
72private:
73
74 /** Wrapped @name IGuestDirectory properties
75 * @{ */
76 HRESULT getDirectoryName(com::Utf8Str &aDirectoryName);
77 HRESULT getFilter(com::Utf8Str &aFilter);
78 /** @} */
79
80 /** Wrapped @name IGuestDirectory methods.
81 * @{ */
82 HRESULT close();
83 HRESULT read(ComPtr<IFsObjInfo> &aObjInfo);
84 /** @} */
85
86 struct Data
87 {
88 /** The directory's open info. */
89 GuestDirectoryOpenInfo mOpenInfo;
90 /** The process tool instance to use. */
91 GuestProcessTool mProcessTool;
92 /** Object data cache.
93 * Its mName attribute acts as a beacon if the cache is valid or not. */
94 GuestFsObjData mObjData;
95 } mData;
96};
97
98#endif /* !MAIN_INCLUDED_GuestDirectoryImpl_h */
99
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette