“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函数配置出问题了?
...全文
238 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文系统阐述了正规表达式(正则表达式)作为词法分析核心工具的理论基础与实际应用。文章从字母表、符号串等基本概念出发,详细介绍了正规式的定义、运算规则、代数性质及其与有限自动机(NFA/DFA)的等价关系,阐明了通过Thompson构造法、子集构造法和DFA最小化实现词法分析器自动生成的技术路径。同时,文中列举了标识符、关键字、运算符等编程语言元素的正规式描述,并说明了最长匹配和优先级规则在歧义消解中的作用。此外,还对比了正规式与上下文无关文法的表达能力差异,指出了其在嵌套结构和计数能力上的局限性,并介绍了Lex/Flex等词法分析器生成工具的应用场景。; 适合人群:计算机相关专业学生、编译原理初学者、希望深入理解词法分析机制的研发人员;具备一定的离散数学和形式语言基础者更佳。; 使用场景及目标:① 学习如何使用正规表达式精确描述程序语言的词法规则;② 掌握从正规式到DFA的转换流程及其实现原理,为构建编译器前端打下基础;③ 理解词法分析器生成工具的工作机制,提升对自动化工具的理解与运用能力。; 阅读建议:建议结合编译器设计实践进行学习,尝试手动完成正规式到NFA再到DFA的转换练习,并使用Flex等工具验证结果,以加深对理论知识的理解与应用。

111,129

社区成员

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

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

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