labview调用dll获取硬件信息结构体求教
时间:10-02
整理:3721RD
点击:
想调用winmm.dll中的waveOutGetDevCaps获取声卡信息,但是里面有结构体数据,尝试了几次都失败告终,求大虾指教。
MMRESULT waveOutGetDevCaps( UINT_PTR uDeviceID, LPWAVEOUTCAPS pwoc, UINT cbwoc );
typedef struct {
WORD wMid;
WORD wPid;
MMVERSION vDriverVersion;
TCHAR szPname[MAXPNAMELEN];
DWORD dwFormats;
WORD wChannels;
WORD wReserved1;
DWORD dwSupport;
} WAVEOUTCAPS;
MMRESULT waveOutGetDevCaps( UINT_PTR uDeviceID, LPWAVEOUTCAPS pwoc, UINT cbwoc );
typedef struct {
WORD wMid;
WORD wPid;
MMVERSION vDriverVersion;
TCHAR szPname[MAXPNAMELEN];
DWORD dwFormats;
WORD wChannels;
WORD wReserved1;
DWORD dwSupport;
} WAVEOUTCAPS;
一般来说,struct对应LabVIEW中的Cluster,但是字节对齐的细节有不同,要视具体情况而做出一些调整。如果有该DLL的头文件,可以直接利用LabVIEW将DLL转成VI来使用,免去一些调试的麻烦。
如果你想获得声卡的名称,大可不用这样。LV自带的2个ExpressVI就包含这个功能,你只需要看看它的子Vi。至于结构体与Struct的对应关系,LV有自带例程,LZ可以看一下,主要是字节对齐的问题。