我正在尝试使用RasGetEntryProperties
获取有关我的某个电话簿条目的信息,但是当我这样做时,返回的RASENTRY结构包含除dwSize
和{{1}之外的所有元素的零或空格}。
我对这些数据的工作原理并不完全了解,但我原本以为我至少会看到存储在电话簿中的设备名称或电话号码......
这是我的代码:
dwOptions
以下是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);
的部分屏幕截图...
修改
这是我对outRasEntry
RASENTRY
答案 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.