“LRecordWave.WaveAPIFun”不可访问,因为它受保护级别限制

yangyi_33855 2012-02-16 11:09:11
今天编程的时候,出现了标题所示的问题,但是我WaveAPIFun类以前运行的时候从来没出过错的啊。
下面是这个类的全部代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace LRecordWave
{
internal class WaveAPIFun
{
// consts 地址常量
public const int MMSYSERR_NOERROR = 0; // no error 表示无异常的地址

public const int MM_WIM_DATA = 0x3C0;

public const int CALLBACK_FUNCTION = 0x00030000;


public delegate void WaveDelegate(IntPtr hdrvr,int uMsg,int dwUser,ref WaveHdr wavhdr,int dwParam2);

[StructLayout(LayoutKind.Sequential)]
public struct WaveHdr//结构体,指定波形文件结构
{
public IntPtr lpData; // pointer to locked data buffer 指针,用于指定数据缓冲区
public int dwBufferLength; // length of data buffer 数据缓冲区的长度
public int dwBytesRecorded; // used for input only
public IntPtr dwUser; // for client's use
public int dwFlags; // assorted flags (see defines)
public int dwLoops; // loop control counter
public IntPtr lpNext; // PWaveHdr, reserved for driver
public int reserved; // reserved for driver
}
private const string mmdll="winmm.dll";

//录音时,所需用到的winmm.dll中的API函数
[DllImport(mmdll)]
public static extern int waveInPrepareHeader(IntPtr hWaveIn, ref WaveHdr lpWaveInHdr, int uSize);
[DllImport(mmdll)]
public static extern int waveInUnprepareHeader(IntPtr hWaveIn, ref WaveHdr lpWaveInHdr, int uSize);
[DllImport(mmdll)]
public static extern int waveInAddBuffer(IntPtr hwi, ref WaveHdr pwh, int cbwh);
[DllImport(mmdll)]
public static extern int waveInGetNumDevs();
[DllImport(mmdll)]
public static extern int waveInOpen(out IntPtr phwi, int uDeviceID, WaveFormat lpFormat, WaveDelegate dwCallback, int dwInstance, int dwFlags);
[DllImport(mmdll)]
public static extern int waveInStart(IntPtr hwi);
[DllImport(mmdll)]
public static extern int waveInReset(IntPtr hwi);
[DllImport(mmdll)]
public static extern int waveInClose(IntPtr hwi);
}

出错的位置是:
private WaveAPIFun.WaveHdr m_Header;//引用结构体,用来存放暂存数据的地址
internal static void WaveInProc(IntPtr hdrvr, int uMsg,
int dwUser, ref WaveAPIFun.WaveHdr wavhdr, int dwParam2)
{^^^^^^^^^}等地方,

求教高手,这是什么原因呢,是不是API函数配置出问题了?
...全文
160 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧