VirtualBox

Changeset 34786 in vbox for trunk/src/VBox/Runtime


Ignore:
Timestamp:
Dec 7, 2010 2:49:17 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
68596
Message:

iprt: Implemented most of the RTVfsFile API.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/vfs/vfsbase.cpp

    r34535 r34786  
    24022402
    24032403
     2404RTDECL(int)         RTVfsFileQueryInfo(RTVFSFILE hVfsFile, PRTFSOBJINFO pObjInfo, RTFSOBJATTRADD enmAddAttr)
     2405{
     2406    RTVFSFILEINTERNAL *pThis = hVfsFile;
     2407    AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
     2408    AssertReturn(pThis->uMagic == RTVFSFILE_MAGIC, VERR_INVALID_HANDLE);
     2409    return RTVfsObjQueryInfo(&pThis->Stream.Base, pObjInfo, enmAddAttr);
     2410}
     2411
     2412
     2413RTDECL(int)         RTVfsFileRead(RTVFSFILE hVfsFile, void *pvBuf, size_t cbToRead, size_t *pcbRead)
     2414{
     2415    AssertPtrNullReturn(pcbRead, VERR_INVALID_POINTER);
     2416    if (pcbRead)
     2417        *pcbRead = 0;
     2418    RTVFSFILEINTERNAL *pThis = hVfsFile;
     2419    AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
     2420    AssertReturn(pThis->uMagic == RTVFSFILE_MAGIC, VERR_INVALID_HANDLE);
     2421    return RTVfsIoStrmRead(&pThis->Stream, pvBuf, cbToRead, true /*fBlocking*/, pcbRead);
     2422}
     2423
     2424
     2425RTDECL(int)         RTVfsFileWrite(RTVFSFILE hVfsFile, const void *pvBuf, size_t cbToWrite, size_t *pcbWritten)
     2426{
     2427    AssertPtrNullReturn(pcbWritten, VERR_INVALID_POINTER);
     2428    if (pcbWritten)
     2429        *pcbWritten = 0;
     2430    RTVFSFILEINTERNAL *pThis = hVfsFile;
     2431    AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
     2432    AssertReturn(pThis->uMagic == RTVFSFILE_MAGIC, VERR_INVALID_HANDLE);
     2433    return RTVfsIoStrmWrite(&pThis->Stream, pvBuf, cbToWrite, true /*fBlocking*/, pcbWritten);
     2434}
     2435
     2436
     2437/// @todo RTDECL(int) RTVfsFileWriteAt(RTVFSFILE hVfsFile, RTFOFF off, const void *pvBuf, size_t cbToWrite, size_t *pcbWritten);
     2438/// @todo RTDECL(int) RTVfsFileReadAt(RTVFSFILE hVfsFile, RTFOFF off, void *pvBuf, size_t cbToRead, size_t *pcbRead);
     2439
     2440
     2441RTDECL(int) RTVfsFileFlush(RTVFSFILE hVfsFile)
     2442{
     2443    RTVFSFILEINTERNAL *pThis = hVfsFile;
     2444    AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
     2445    AssertReturn(pThis->uMagic == RTVFSFILE_MAGIC, VERR_INVALID_HANDLE);
     2446    return RTVfsIoStrmFlush(&pThis->Stream);
     2447}
     2448
     2449
     2450RTDECL(RTFOFF) RTVfsFilePoll(RTVFSFILE hVfsFile, uint32_t fEvents, RTMSINTERVAL cMillies, bool fIntr,
     2451                                  uint32_t *pfRetEvents)
     2452{
     2453    RTVFSFILEINTERNAL *pThis = hVfsFile;
     2454    AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
     2455    AssertReturn(pThis->uMagic == RTVFSFILE_MAGIC, VERR_INVALID_HANDLE);
     2456    return RTVfsIoStrmPoll(&pThis->Stream, fEvents, cMillies, fIntr, pfRetEvents);
     2457}
     2458
     2459
     2460RTDECL(RTFOFF) RTVfsFileTell(RTVFSFILE hVfsFile)
     2461{
     2462    RTVFSFILEINTERNAL *pThis = hVfsFile;
     2463    AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
     2464    AssertReturn(pThis->uMagic == RTVFSFILE_MAGIC, VERR_INVALID_HANDLE);
     2465    return RTVfsIoStrmTell(&pThis->Stream);
     2466}
     2467
     2468
    24042469RTDECL(int) RTVfsFileSeek(RTVFSFILE hVfsFile, RTFOFF offSeek, uint32_t uMethod, uint64_t *poffActual)
    24052470{
Note: See TracChangeset for help on using the changeset viewer.

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