0

我正在尝试创建一个 DUN 条目。

我正在调用带有 null 的 lpRasEntry 参数的 RasGetEntryProperties。这应该在 lpdwEntryInfoSize 参数中返回结构大小。相反,它返回一个错误 - ERROR_INVALID_SIZE。

如何调用 RasGetEntryProperties 函数来获取 RasEntry 结构大小?

4

1 回答 1

0

文档说,Error_Invalid_Size当记录的dwSize字段不正确时,这RasEntry是错误。如果函数能够读取该字段,那么您没有lpRasEntry像您声称的那样为参数提供空指针。Microsoft 文档说“null”,在 Delphi 中,保留字nil表示空指针。不要与名为;的函数混淆。Null它指定特殊Variant值。

根据文档,您应该有如下代码:

var
  RasEntry: PRasEntry;
  RasBufferSize: DWord;
  Res: DWord;
begin
  RasBufferSize := 0;
  Res := RasGetEntryProperties(nil, '', nil, @RasBufferSize, nil, nil);
  if Res <> Error_Success then
    RaiseLastOSError(Res);
  RasEntry := AllocMem(RasBufferSize);
  try
    RasEntry.dwSize := SizeOf(TRasEntry);
    Assert(RasEntry.dwSize <= RasBufferSize);
    Res := RasGetEntryProperties(nil, '', RasEntry, @RasBufferSize, nil, nil);
  finally
    FreeMem(RasEntry);
  end;
end;

您询问函数它需要多大的缓冲区(in RasBufferSize),然后告诉它您希望它填充多大的缓冲区(in RasEntry.dwSize)。该dwSize字段告诉函数您期望接收的结构版本。

于 2009-10-15T17:11:48.037 回答