VirtualBox

source: vbox/trunk/src/VBox/Storage/testcase/VDMemDisk.h@ 40257

Last change on this file since 40257 was 36134, checked in by vboxsync, 14 years ago

tstVDIo: Add simple data verification.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.7 KB
Line 
1/** @file
2 *
3 * VBox HDD container test utility, memory disk/file.
4 */
5
6/*
7 * Copyright (C) 2011 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#ifndef __VDMemDisk_h__
18#define __VDMemDisk_h__
19
20#include <iprt/sg.h>
21
22/** Handle to the a memory disk. */
23typedef struct VDMEMDISK *PVDMEMDISK;
24/** Pointer to a memory disk handle. */
25typedef PVDMEMDISK *PPVDMEMDISK;
26
27/**
28 * Creates a new memory disk with the given size.
29 *
30 * @returns VBOX status code.
31 *
32 * @param ppMemDisk Where to store the memory disk handle.
33 * @param cbSize Size of the disk if it is fixed.
34 * If 0 the disk grows when it is written to
35 * and the size can be changed with
36 * VDMemDiskSetSize().
37 */
38int VDMemDiskCreate(PPVDMEMDISK ppMemDisk, uint64_t cbSize);
39
40/**
41 * Destroys a memory disk.
42 *
43 * @returns nothing.
44 *
45 * @param pMemDisk The memory disk to destroy.
46 */
47void VDMemDiskDestroy(PVDMEMDISK pMemDisk);
48
49/**
50 * Writes the specified amount of data from the S/G buffer at
51 * the given offset.
52 *
53 * @returns VBox status code.
54 *
55 * @param pMemDisk The memory disk handle.
56 * @param off Where to start writing to.
57 * @param cbWrite How many bytes to write.
58 * @param pSgBuf The S/G buffer to write from.
59 */
60int VDMemDiskWrite(PVDMEMDISK pMemDisk, uint64_t off, size_t cbWrite, PRTSGBUF pSgBuf);
61
62/**
63 * Reads the specified amount of data into the S/G buffer
64 * starting from the given offset.
65 *
66 * @returns VBox status code.
67 *
68 * @param pMemDisk The memory disk handle.
69 * @param off Where to start reading from.
70 * @param cbRead The amount of bytes to read.
71 * @param pSgBuf The S/G buffer to read into.
72 */
73int VDMemDiskRead(PVDMEMDISK pMemDisk, uint64_t off, size_t cbRead, PRTSGBUF pSgBuf);
74
75/**
76 * Sets the size of the memory disk.
77 *
78 * @returns VBox status code.
79 *
80 * @param pMemDisk The memory disk handle.
81 * @param cbSize The new size to set.
82 */
83int VDMemDiskSetSize(PVDMEMDISK pMemDisk, uint64_t cbSize);
84
85/**
86 * Gets the current size of the memory disk.
87 *
88 * @returns VBox status code.
89 *
90 * @param pMemDisk The memory disk handle.
91 * @param pcbSize Where to store the size of the memory
92 * disk.
93 */
94int VDMemDiskGetSize(PVDMEMDISK pMemDisk, uint64_t *pcbSize);
95
96/**
97 * Dumps the memory disk to a file.
98 *
99 * @returns VBox status code.
100 *
101 * @param pMemDisk The memory disk handle.
102 * @param pcszFilename Where to dump the content.
103 */
104int VDMemDiskWriteToFile(PVDMEMDISK pMemDisk, const char *pcszFilename);
105
106/**
107 * Reads the content of a file into the given memory disk.
108 * All data stored in the memory disk will be overwritten.
109 *
110 * @returns VBox status code.
111 *
112 * @param pMemDisk The memory disk handle.
113 * @param pcszFilename The file to load from.
114 */
115int VDMemDiskReadFromFile(PVDMEMDISK pMemDisk, const char *pcszFilename);
116
117/**
118 * Compares the given range of the memory disk with a provided S/G buffer.
119 *
120 * @returns whatever memcmp returns.
121 *
122 * @param pMemDisk The memory disk handle.
123 * @param off Where to start comparing.
124 * @param cbCmp How many bytes to compare.
125 * @param pSgBuf The S/G buffer to compare with.
126 */
127int VDMemDiskCmp(PVDMEMDISK pMemDisk, uint64_t off, size_t cbCmp, PRTSGBUF pSgBuf);
128
129#endif /* __VDMemDisk_h__ */
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