protected override void OnExecuteComplete(ref WFSRESULT result) { switch (result.dwCommandCodeOrEventID) { case IDCDefinition.WFS_CMD_IDC_READ_RAW_DATA: if (result.hResult == XFSDefinition.WFS_SUCCESS) { WFSIDCCardData[] data = XFSUtil.XFSPtrToArray <WFSIDCCardData>(result.lpBuffer); IDCCardData[] outerData = new IDCCardData[data.Length]; for (int i = 0; i < data.Length; ++i) { outerData[i] = new IDCCardData(); outerData[i].DataSource = data[i].wDataSource; outerData[i].WriteMethod = data[i].fwWriteMethod; outerData[i].Status = data[i].wStatus; if (data[i].ulDataLength > 0) { outerData[i].Data = new byte[data[i].ulDataLength]; for (int j = 0; j < data[i].ulDataLength; ++j) { outerData[i].Data[j] = Marshal.ReadByte(data[i].lpbData, j); } } } OnReadRawDataComplete(outerData); } else { OnReadRawDataError(result.hResult); } break; case IDCDefinition.WFS_CMD_IDC_EJECT_CARD: if (result.hResult == XFSDefinition.WFS_SUCCESS) { OnEjectComplete(); } else { OnEjectError(result.hResult); } break; } }
protected void OnReadRawDataComplete(IntPtr ptr) { WFSIDCCardData[] data = XFSUtil.XFSPtrToArray <WFSIDCCardData>(ptr); IDCCardData[] outerData = new IDCCardData[data.Length]; for (int i = 0; i < data.Length; ++i) { outerData[i] = new IDCCardData(); outerData[i].DataSource = data[i].wDataSource; outerData[i].WriteMethod = data[i].fwWriteMethod; outerData[i].Status = data[i].wStatus; if (data[i].ulDataLength > 0) { outerData[i].Data = new byte[data[i].ulDataLength]; for (int j = 0; j < data[i].ulDataLength; ++j) { outerData[i].Data[j] = Marshal.ReadByte(data[i].lpbData, j); } } } if (ReadRawDataComplete != null) { ReadRawDataComplete(outerData); } }