#include "stdafx.h"
#include "stdlib.h"
typedef void* (*STMPROC_GET_BUF_FUNC)(int *psdwLength, void *hMemHandle);
typedef int (*STMPROC_RTN_BUF_FUNC)(void *pRtpData, int sdwLength, void *hMemHandle);
typedef struct
{
STMPROC_GET_BUF_FUNC pGetBufFunc;
STMPROC_RTN_BUF_FUNC pRtnBufFunc;
}VIDEO_REV;
int FunctionDiaoyong(VIDEO_REV *pstSecRev,
STMPROC_GET_BUF_FUNC pGetBufFunc,
STMPROC_RTN_BUF_FUNC pRtnBufFunc)
{
if ((NULL == pGetBufFunc) || (NULL == pRtnBufFunc))
{
printf("FunctionDiaoyong: input funx pointer is NULL!");
return 1;
}
pstSecRev->pGetBufFunc = pGetBufFunc;
pstSecRev->pRtnBufFunc = pRtnBufFunc;
return 0;
}
void *funcA(int *psdwLength, void *hMemHandle)
{
printf("funcA , %d \n", *psdwLength);
void *pBuf = NULL;
pBuf = (void *)malloc(2000);
if (pBuf == NULL)
{
printf("funcA pBuf err");
}
return pBuf;
}
int funcB(void *pRtpData, int sdwLength, void *hMemHandle)
{
printf("funcB");
return 1;
}
//主函数
int _tmain(int argc, _TCHAR* argv[])
{
int a = 10;
int b = 15;
void *sss;
sss = (void *)malloc(12);
if (sss == NULL)
{
printf("sss err");
return 0;
}
VIDEO_REV stSecRevPar;
FunctionDiaoyong(&stSecRevPar,
funcA,
funcB);
stSecRevPar.pGetBufFunc(&a, sss);
stSecRevPar.pGetBufFunc(&b, sss);
return 0;
}
运行后的结果:
funcA, 10
funcA, 15