0

DUN エントリを作成しようとしています。

null の lpRasEntry パラメータを使用して RasGetEntryProperties を呼び出しています。これにより、lpdwEntryInfoSize パラメータで構造サイズが返されます。代わりに、エラー - ERROR_INVALID_SIZE を返します。

RasGetEntryProperties 関数を呼び出して RasEntry 構造体のサイズを取得するにはどうすればよいですか?

4

1 に答える 1

0

ドキュメントには、レコードのフィールドが正しくないError_Invalid_Size場合のエラーであると記載されています。関数がそのフィールドを読み取ることができた場合、あなたが主張したように、パラメーターに null ポインターを提供しませんでした。Microsoft のドキュメントには「null」と記載されていますが、Delphi では、予約語はヌル ポインタを示します。という名前の関数と混同しないでください。特別な値を指定します。dwSizeRasEntrylpRasEntrynilNullVariant

ドキュメントに基づいて、次のようなコードが必要です。

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フィールドは、受け取る予定の構造体のバージョンを関数に伝えます。

于 2009-10-15T17:11:48.037 に答える