我正在尝试创建一个DUN条目。
我使用lpRasEntry参数null调用RasGetEntryProperties。这应该返回lpdwEntryInfoSize参数中的结构大小。相反,它会返回错误 - ERROR_INVALID_SIZE。
如何调用RasGetEntryProperties函数来获取RasEntry结构大小?
答案 0 :(得分:0)
The documentation表示当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;
你问函数它需要多大的缓冲区(在RasBufferSize
中),然后告诉它你希望它填充的缓冲区有多大(在RasEntry.dwSize
中)。 dwSize
字段告诉函数您期望接收的结构版本。