我正在尝试创建一个 DUN 条目。
我正在调用带有 null 的 lpRasEntry 参数的 RasGetEntryProperties。这应该在 lpdwEntryInfoSize 参数中返回结构大小。相反,它返回一个错误 - ERROR_INVALID_SIZE。
如何调用 RasGetEntryProperties 函数来获取 RasEntry 结构大小?
文档说,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
字段告诉函数您期望接收的结构版本。