DLL程序和回调函数,看看有什么有关问题?不好意思就这点分了

DLL程序和回调函数,看看有什么问题?不好意思就这点分了
提供给二次开发方的DLL,主要是接收和解析数据,由二次开发方完成最后的处理函数,想采用回调函数的方式,能否指点一下下面的做法是否有什么问题?

void   start()   //dll中处理SOCKET接收数据函数
{
  ....//接收数据处理,略  
  while(s!=SOCKET_ERROR)
        {
s=recv(msgsock[msgcount],buff,100,0);   //buff为收到的数据
                CString   str;
if(buff.Mid(2,3)== "01 ")   //如果在收到的数据中发现功能号是01
{
                    str   =   buff.Mid(4,10);
                    ....//对收到数据进行解析,假设str是解析完成的数据
 
                    SendSaleData(str,CALLBACK   ProceSaleData);//销售数据处理,ProceSaleData由二次开发方实现,这里str等
                                                                                                      //解析出来的数据可否在回调函数ProceSaleData中当参数用?  
                }
 
if(buff.Mid(2,3)== "02 ")   //如果在收到的数据中发现功能号是02
{
                      str   =   buff.Mid(4,10);
                    ....//对收到数据进行解析,假设str是解析完成的数据
                    SendImportData(str,CALLBACK   ProceImportData);//进货数据处理,ProceImportData由二次开发方实现
                }
                ......
          }
....
}

二次开发方加载DLL,并在自己的工程中实现上面的回调函数,可否?如果二次开发方用的是delphi等,是否也是可行?

------解决方案--------------------
可以用回调函数.
但要注意,声明和定义函数时,一定要有__stdcall,
还有参数的声明在dll和调用程序间保持一致