有没有基于音频采集卡开发的高手,一个相当诡异的问题!!!!
我现在基于一个音频采集卡进行开发,就是调用它提供的API进行音频数据的采集,我现在可以调用他的回调函数采集到数据,但是采集到的数据只有部分正确,不知道为什么,他的回调函数是 
 int      BOOL   CALLBACK   lpAudioCaptureCallback(   ULONG   _ulDataInfoPtr,   ULONG   _ulContextPtr   ) 
 { 
 	AUD5_DATA_INFO*	      _pInfo   =   (AUD5_DATA_INFO*)_ulDataInfoPtr; 
 	tCALLBACKCONTEXT*   _pContext   =   (tCALLBACKCONTEXT*)_ulContextPtr; 
                      ///////////////////////////////////////////////////////// 
                                                                   做相应的音频采集工作 
                      ////////////////////////////////////////////////////////// 
 } 
 其中_ulDataInfoPtr是获得的音频数据结构的指针,_ulContextPtr   是相关的句柄(我觉得这个基本没什么用),其中AUD5_DATA_INFO结构如下 
 struct   _AUD5_DATA_INFO   { 
 	ULONG	uDataType;// 
 	ULONG	uStructSize;// 
 	ULONG	uErrCode;// 
 	ULONG	uBoardNum;      //   Board   ID[0..3] 
 	ULONG	uChannelNum;//   Channel   ID   of   the   Board 
 	ULONG	uHasNextData; 
 	UCHAR	*pDataBuffer;   //   存放音频数据地址 
 	ULONG	uLen; 
 	long	TimeTag;	//   KeQuerySystemTime() 
 	ULONG	uDataAttr;   
 }   AUD5_DATA_INFO; 
 我现在在C#中把这个结构转化成如下形式: 
                         public   struct   AUD5_DATA_INFO    
                         { 
                                     public   uint   uDataType; 
                                     public   uint   uStructSize; 
                                     public   uint   uErrCode; 
                                     public   uint   uBoardNum;			//   Board   ID[0..3] 
                                     public   uint   uChannelNum;		//   Channel   ID   of   the   Board 
                                     public   uint   uHasNextData; 
                                     public   IntPtr   pDataBuffer; 
                                     public   uint   uLen; 
                                     public   long   QuadPart 
                                     public   uint   uDataAttr;   
                         } 
 问题是,每次我把回调函数得到的指针转化成AUD5_DATA_INFO结构以后,结构中其他成员的值都对,就是pDataBuffer地址中所采集到的音频值不正确,特地来请教一下高手到底是什么地方可能出了问题呢!!!!!!! 
------解决方案--------------------我没有做过语音采集的,只是提供一个建议吧 
 public IntPtr pDataBuffer; 
 UCHAR *pDataBuffer; // 存放音频数据地址   
 将你的改为: 
 public UCHAR *pDataBuffer; 
 再试试看,估计是由大小端引起的问题,或者是字节对齐所引起的问题
------解决方案--------------------C#没学过,只能猜了……   
  "public IntPtr pDataBuffer; "中的IntPtr是个什么东西?是否是指向int的指针?如果是的话,试试用指向char的指针来替代吧……