RasGetEntryProperties返回全零

时间:2015-07-14 08:56:24

标签: c# pinvoke ras

我正在尝试使用RasGetEntryProperties获取有关我的某个电话簿条目的信息,但是当我这样做时,返回的RASENTRY结构包含除dwSize和{{1}之外的所有元素的零或空格}。

我对这些数据的工作原理并不完全了解,但我原本以为我至少会看到存储在电话簿中的设备名称或电话号码......

这是我的代码:

dwOptions

Phonebook entry properties

以下是Visual Studio调试器中Watch的 uint dwEntryInfoSize = 0; uint i = RasGetEntryProperties(null, "", IntPtr.Zero, ref dwEntryInfoSize, IntPtr.Zero, IntPtr.Zero); RASENTRY getRasEntry = new RASENTRY(); string entryName = "Dial-up Connection test"; getRasEntry.dwSize = (int)dwEntryInfoSize; IntPtr ptrRasEntry = Marshal.AllocHGlobal((int)dwEntryInfoSize); Marshal.StructureToPtr(getRasEntry, ptrRasEntry, false); uint j = RasGetEntryProperties(null, entryName, ptrRasEntry, ref dwEntryInfoSize, IntPtr.Zero, IntPtr.Zero); RASENTRY outRasEntry = (RASENTRY)Marshal.PtrToStructure(ptrRasEntry, typeof(RASENTRY)); Marshal.FreeHGlobal(ptrRasEntry); 的部分屏幕截图...

Output in debugger watch

修改 这是我对outRasEntry

的定义
RASENTRY

1 个答案:

答案 0 :(得分:0)

感谢leppie将我指向了dotras.codeplex.com的方向 - 尽管我最终没有使用该库,但查看其源代码帮我修复了自己的...

关键在于RASENTRY的定义......下面第一行的变化使其发挥作用

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 4)]
public struct RASENTRY
{
    public int       dwSize;
    public int       dwfOptions;
    public int       dwCountryID;
    public int       dwCountryCode;

// etc.