|
Available in LEADTOOLS Imaging Pro, Vector, Document, and Medical Imaging toolkits. |
REDIRECTREAD Callback Function
#include "l_bitmap.h"
L_UINT pEXT_CALLBACK YourRead(nFd, pBuf, uCount, pUserData)
|
L_HFILE nFd; |
/* file handle */ |
|
L_UCHAR* pBuf; |
/* address of buffer for read data */ |
|
L_UINT uCount; |
/* length of data buffer */ |
|
L_VOID* pUserData; |
/* pointer to additional parameters */ |
Replaces the normal LEADTOOLS function for reading a file.
|
Parameter |
Description |
|
nFd |
Identifies the file to be read. The file handle is returned by the REDIRECTOPEN callback function. |
|
pBuf |
Points to a buffer that is to receive the data read from the file. |
|
uCount |
Specifies the number of bytes to be read from the file. |
|
pUserData |
A void pointer that you can use to access a variable or structure containing data that your callback function needs. This gives you a way to receive data indirectly from the function that uses this callback function. (This is the same pointer that you pass in the pUserData parameter of the calling function.) |
|
|
Keep in mind that this is a void pointer, which must be cast to the appropriate data type within your callback function. |
Returns
|
>0 |
The number of bytes that the function read from the file. |
|
-1 |
The function failed. |
Comments
For information about using this type of callback, refer to L_RedirectIO.
Required DLLs and Libraries
|
LTKRN For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application |
Example
To see how the following function is defined and called, refer to L_RedirectIO. This procedure is a replacement to the built in read procedure. It reads the data from the allocated memory and adjusts the internal data.
/************************** Global Declarations **********************************/
typedef struct tagUSERDATA
{
L_INT32 dwSize; /* Size of the buffer. */
L_INT32 dwUsed; /* Number of bytes used. */
L_CHAR *pData; /* Pointer to the buffer. */
L_CHAR *pCurData; /* Current pointer location. */
} USERDATA, * LPUSERDATA;
static USERDATA UserData;
/* Pointer to DATA structure */
/***************************************************************************************/
L_UINT WindowsRead (L_INT FD, L_CHAR * pBuf, L_UINT uCount)
{
UNREFERENCED_PARAMETER (FD);
/* Is the request for more data than is left in memory? /
if (uCount + UserData.pCurData > UserData.pData + UserData.dwSize)
uCount = (L_UINT) (UserData.dwSize - UserData.dwUsed); / adjust request */
/* Copy data to the buffer of the caller. */
_fmemcpy (pBuf, UserData.pCurData, uCount);
/* Adjust internal data. */
UserData.pCurData += uCount;
UserData.dwUsed += uCount;
return (uCount);
}