0..389 = 390, da du wohl immernoch das -1 vergessen hast.
Das wären 1,5*
MAX_PATH, aber wie schon erwähnt, sollte man an vorgegebenen Konstanten nicht rumspielen.
Delphi-Quellcode:
var
S: TFileStream;
N: FilterNames;
S := TFileStream.Create('dateiname', fmCreate);
FillChar(N, SizeOf(N), 0);
bdaapiGetDevNameAndFEType(hOpen, N);
S.WriteBuffer(N, SizeOf(N));
FillChar(N, SizeOf(N), 255);
bdaapiGetDevNameAndFEType(hOpen, N);
S.WriteBuffer(N, SizeOf(N));
S.Free;
Und wenn man sich mit garnicht ssicher ist, dann doch eher wie Folgt.
Delphi-Quellcode:
function bdaapiGetDevNameAndFEType(hOpen: THandle; P: Pointer): HRESULT; stdcall;
var
S: TFileStream;
B: array[0..8191] of Byte; // 8 KB sollten groß genug sein (selbst 2 KB dürften, laut Spezifikation, ausreichen)
S := TFileStream.Create('dateiname', fmCreate);
FillChar(B, SizeOf(B), 0);
bdaapiGetDevNameAndFEType(hOpen, @B);
S.WriteBuffer(B, SizeOf(B));
FillChar(B, SizeOf(B), 255);
bdaapiGetDevNameAndFEType(hOpen, @B);
S.WriteBuffer(B, SizeOf(B));
S.Free;
Und die Datei hier anhängen.
Ginge natürlich auch einfacher, wenn man die Möglichkeiten des Debuggers nutzen und sich die Variable direkt im Speicher ansieht.