📄 cpl__vsi_8h.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>OGR: cpl_vsi.h File Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"><link href="tabs.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.5.1 --><div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li id="current"><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> </ul></div><div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>File Members</span></a></li> </ul></div><div class="nav"><a class="el" href="dir_efff706e5cd9dcba4fff01f296fe615e.html">port</a></div><h1>cpl_vsi.h File Reference</h1><code>#include "<a class="el" href="cpl__port_8h-source.html">cpl_port.h</a>"</code><br><code>#include <unistd.h></code><br><code>#include <sys/stat.h></code><br><p><a href="cpl__vsi_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0"><tr><td></td></tr><tr><td colspan="2"><br><h2>Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">FILE * </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__vsi_8h.html#48b5fab6cc22a9d0a543c095ee358634">VSIFOpenL</a> (const char *, const char *)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Open file. <a href="#48b5fab6cc22a9d0a543c095ee358634"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__vsi_8h.html#b1fc5cbfff98db8f5aa912606b07e8d9">VSIFCloseL</a> (FILE *)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Close file. <a href="#b1fc5cbfff98db8f5aa912606b07e8d9"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__vsi_8h.html#e4fbf582f429d575cd06d559afb0ce5a">VSIFSeekL</a> (FILE *, vsi_l_offset, int)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Seek to requested offset. <a href="#e4fbf582f429d575cd06d559afb0ce5a"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">vsi_l_offset </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__vsi_8h.html#8e02ad6d2abd844a57a206e3ebba50b4">VSIFTellL</a> (FILE *)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Tell current file offset. <a href="#8e02ad6d2abd844a57a206e3ebba50b4"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__vsi_8h.html#64335c9b9395cf8b40273a9cce4b46bf">VSIFReadL</a> (void *, size_t, size_t, FILE *)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Read bytes from file. <a href="#64335c9b9395cf8b40273a9cce4b46bf"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__vsi_8h.html#485b2abb8535e77a9ee2bef266a4442d">VSIFWriteL</a> (const void *, size_t, size_t, FILE *)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Write bytes to file. <a href="#485b2abb8535e77a9ee2bef266a4442d"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__vsi_8h.html#9e4f504264ad821b81bd26744a9c291f">VSIFEofL</a> (FILE *)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Test for end of file. <a href="#9e4f504264ad821b81bd26744a9c291f"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__vsi_8h.html#1e43bee7439e2da7f59bfa8c4d9ff473">VSIFFlushL</a> (FILE *)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Flush pending writes to disk. <a href="#1e43bee7439e2da7f59bfa8c4d9ff473"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__vsi_8h.html#c92fbd5e6fc143b026001b32c4c19ed1">VSIStatL</a> (const char *, VSIStatBufL *)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Get filesystem object info. <a href="#c92fbd5e6fc143b026001b32c4c19ed1"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__vsi_8h.html#ef0a5243bbc47cf9645a135d0c7d26df">VSIMkdir</a> (const char *pathname, long mode)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Create a directory. <a href="#ef0a5243bbc47cf9645a135d0c7d26df"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__vsi_8h.html#763cceaa0966f37b71a0185c92bb3ad8">VSIRmdir</a> (const char *pathname)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Delete a directory. <a href="#763cceaa0966f37b71a0185c92bb3ad8"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__vsi_8h.html#69dad1bd6f1af9935c1523db0c6c212f">VSIUnlink</a> (const char *pathname)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Delete a file. <a href="#69dad1bd6f1af9935c1523db0c6c212f"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__vsi_8h.html#26cae93b5a32e11bef9ec7c118f8cca4">VSIRename</a> (const char *oldpath, const char *newpath)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Rename a file. <a href="#26cae93b5a32e11bef9ec7c118f8cca4"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__vsi_8h.html#66e2e6f093fd42f8a941b962d4c8a19e">VSIInstallMemFileHandler</a> (void)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Install "memory" file system handler. <a href="#66e2e6f093fd42f8a941b962d4c8a19e"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">FILE * </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__vsi_8h.html#1ecb3a78729ecea4d2ce22065a605244">VSIFileFromMemBuffer</a> (const char *pszFilename, GByte *pabyData, vsi_l_offset nDataLength, int bTakeOwnership)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Create memory "file" from a buffer. <a href="#1ecb3a78729ecea4d2ce22065a605244"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">GByte * </td><td class="memItemRight" valign="bottom"><a class="el" href="cpl__vsi_8h.html#eaf26bcc4a5314371f426bb2a5e6ce7a">VSIGetMemFileBuffer</a> (const char *pszFilename, vsi_l_offset *pnDataLength, int bUnlinkAndSeize)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Fetch buffer underlying memory file. <a href="#eaf26bcc4a5314371f426bb2a5e6ce7a"></a><br></td></tr></table><hr><a name="_details"></a><h2>Detailed Description</h2>Standard C Covers<p>The VSI functions are intended to be hookable aliases for Standard C I/O, memory allocation and other system functions. They are intended to allow virtualization of disk I/O so that non file data sources can be made to appear as files, and so that additional error trapping and reporting can be interested. The memory access API is aliased so that special application memory management services can be used.<p>Is is intended that each of these functions retains exactly the same calling pattern as the original Standard C functions they relate to. This means we don't have to provide custom documentation, and also means that the default implementation is very simple. <hr><h2>Function Documentation</h2><a class="anchor" name="b1fc5cbfff98db8f5aa912606b07e8d9"></a><!-- doxytag: member="cpl_vsi.h::VSIFCloseL" ref="b1fc5cbfff98db8f5aa912606b07e8d9" args="(FILE *)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">int VSIFCloseL </td> <td>(</td> <td class="paramtype">FILE * </td> <td class="paramname"> <em>fp</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table></div><div class="memdoc"><p>Close file. <p>This function closes the indicated file.<p>This method goes through the VSIFileHandler virtualization and may work on unusual filesystems such as in memory.<p>Analog of the POSIX fclose() function.<p><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>fp</em> </td><td>file handle opened with <a class="el" href="cpl__vsi_8h.html#48b5fab6cc22a9d0a543c095ee358634">VSIFOpenL()</a>.</td></tr> </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success or -1 on failure. </dd></dl></div></div><p><a class="anchor" name="9e4f504264ad821b81bd26744a9c291f"></a><!-- doxytag: member="cpl_vsi.h::VSIFEofL" ref="9e4f504264ad821b81bd26744a9c291f" args="(FILE *)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">int VSIFEofL </td> <td>(</td> <td class="paramtype">FILE * </td> <td class="paramname"> <em>fp</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table></div><div class="memdoc"><p>Test for end of file. <p>Returns TRUE (non-zero) if the file read/write offset is currently at the end of the file.<p>This method goes through the VSIFileHandler virtualization and may work on unusual filesystems such as in memory.<p>Analog of the POSIX feof() call.<p><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>fp</em> </td><td>file handle opened with <a class="el" href="cpl__vsi_8h.html#48b5fab6cc22a9d0a543c095ee358634">VSIFOpenL()</a>.</td></tr> </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>TRUE if at EOF else FALSE. </dd></dl></div></div><p><a class="anchor" name="1e43bee7439e2da7f59bfa8c4d9ff473"></a><!-- doxytag: member="cpl_vsi.h::VSIFFlushL" ref="1e43bee7439e2da7f59bfa8c4d9ff473" args="(FILE *)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">int VSIFFlushL </td> <td>(</td> <td class="paramtype">FILE * </td> <td class="paramname"> <em>fp</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table></div><div class="memdoc"><p>Flush pending writes to disk. <p>For files in write or update mode and on filesystem types where it is applicable, all pending output on the file is flushed to the physical disk.<p>This method goes through the VSIFileHandler virtualization and may work on unusual filesystems such as in memory.<p>Analog of the POSIX fflush() call.<p><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>fp</em> </td><td>file handle opened with <a class="el" href="cpl__vsi_8h.html#48b5fab6cc22a9d0a543c095ee358634">VSIFOpenL()</a>.</td></tr> </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success or -1 on error. </dd></dl></div></div><p><a class="anchor" name="1ecb3a78729ecea4d2ce22065a605244"></a><!-- doxytag: member="cpl_vsi.h::VSIFileFromMemBuffer" ref="1ecb3a78729ecea4d2ce22065a605244" args="(const char *pszFilename, GByte *pabyData, vsi_l_offset nDataLength, int bTakeOwnership)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">FILE* VSIFileFromMemBuffer </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>pszFilename</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">GByte * </td> <td class="paramname"> <em>pabyData</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">vsi_l_offset </td> <td class="paramname"> <em>nDataLength</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>bTakeOwnership</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table></div><div class="memdoc"><p>Create memory "file" from a buffer. <p>A virtual memory file is created from the passed buffer with the indicated filename. Under normal conditions the filename would need to be absolute and within the /vsimem/ portion of the filesystem.<p>If bTakeOwnership is TRUE, then the memory file system handler will take ownership of the buffer, freeing it when the file is deleted. Otherwise it remains the responsibility of the caller, but should not be freed as long as it might be accessed as a file. In no circumstances does this function take a copy of the pabyData contents.<p><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>pszFilename</em> </td><td>the filename to be created. </td></tr> <tr><td valign="top"></td><td valign="top"><em>pabyData</em> </td><td>the data buffer for the file. </td></tr> <tr><td valign="top"></td><td valign="top"><em>nDataLength</em> </td><td>the length of buffer in bytes. </td></tr> <tr><td valign="top"></td><td valign="top"><em>bTakeOwnership</em> </td><td>TRUE to transfer "ownership" of buffer or FALSE.</td></tr> </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>open file handle on created file (see <a class="el" href="cpl__vsi_8h.html#48b5fab6cc22a9d0a543c095ee358634">VSIFOpenL()</a>). </dd></dl></div></div><p><a class="anchor" name="48b5fab6cc22a9d0a543c095ee358634"></a><!-- doxytag: member="cpl_vsi.h::VSIFOpenL" ref="48b5fab6cc22a9d0a543c095ee358634" args="(const char *, const char *)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">FILE* VSIFOpenL </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>pszFilename</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>pszAccess</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -