XN_C_API XnStatus xnOSLoadFile(const XnChar* cpFileName, void* pBuffer, const XnUInt32 nBufferSize) { // Local function variables XN_FILE_HANDLE FileHandle; XnUInt32 nReadBytes = nBufferSize; XnStatus nRetVal = XN_STATUS_OK; // Validate the input/output pointers (to make sure none of them is NULL) XN_VALIDATE_INPUT_PTR(cpFileName); XN_VALIDATE_OUTPUT_PTR(pBuffer); if (nBufferSize == 0) { return XN_STATUS_NULL_OUTPUT_PTR; } nRetVal = xnOSOpenFile(cpFileName, XN_OS_FILE_READ, &FileHandle); XN_IS_STATUS_OK(nRetVal); nRetVal = xnOSReadFile(FileHandle, pBuffer, &nReadBytes); if ((nRetVal != XN_STATUS_OK) || (nReadBytes != nBufferSize)) { xnOSCloseFile(&FileHandle); return (XN_STATUS_OS_FILE_READ_FAILED); } nRetVal = xnOSCloseFile(&FileHandle); XN_IS_STATUS_OK(nRetVal); // All is good... return (XN_STATUS_OK); }
XnStatus XN_CALLBACK_TYPE PlayerDriver::FileRead(void* pCookie, void* pBuffer, XnUInt32 nSize, XnUInt32* pnBytesRead) { PlayerDriver* pThis = (PlayerDriver*)pCookie; XnUInt32 bufferSize = nSize; XnStatus rc = xnOSReadFile(pThis->m_fileHandle, pBuffer, &bufferSize); *pnBytesRead = bufferSize; return rc; }
XnStatus XnIOFileStream::ReadData(XnUChar *pData, XnUInt32 nDataSize) { XnStatus nRetVal = XN_STATUS_OK; XnUInt32 nReadSize = nDataSize; nRetVal = xnOSReadFile(m_hFile, pData, &nReadSize); XN_IS_STATUS_OK(nRetVal); if (nReadSize != nDataSize) { return XN_STATUS_OS_FILE_READ_FAILED; } return (XN_STATUS_OK); }