2009-11-25 60 views
0

我想从c#中调用SndGetSoundFileList,但由于指针参数的原因,我不知道该函数的p/invoke是如何得到的。c#pinvoke SndGetSoundFileList?

HRESULT SndGetSoundFileList (
    SND_EVENT seSoundEvent, 
    DWORD grfLocations, 
    SNDFILEINFO** ppSoundFiles, 
    int* pcSoundFiles 
); 

我想列表作为一个字符串数组,当然。

任何人都可以帮助我吗?

谢谢!

回答

2

对于数组参数,请使用out IntPtr作为参数类型。然后使用Marshal.PtrToStructure检索结构,并在完成后调用LocalFree释放内存。

+0

使用了IntPtr的很容易,但我不能让Marshal.PtrToStructure到ppSoundFiles转换为结构的数组。那里有窍门吗? – Sam 2009-11-26 14:19:20

+0

你必须手动封送它。 – ctacke 2009-11-26 15:53:31