Форум: "WinAPI";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];
ВнизWNetGetUniversalName Найти похожие ветки
← →
mich (2004-04-15 16:04) [0]Доброго времени суток, знатоки!
Пытаюсь сделать так:var LocalName: PChar;
iType: DWORD;
Buffer: REMOTE_NAME_INFO;
BufSize: DWORD;
...
LocalName:= Edit1.Text; //"O:"
iType:= REMOTE_NAME_INFO_LEVEL;
BufSize:= MAX_PATH*MAX_PATH*MAX_PATH;
WNetGetUniversalName(LocalName, iType, @Buffer, BufSize);
...
Работает. В полях переменной Buffer возвращаются искомые значения, НО: сразу после этого программа вылетает с ошибкой "Access violation...". Не могу понять из-за чего. Прошу помощи. Спасибо.
← →
VMcL © (2004-04-15 16:15) [1]>>mich (15.04.04 16:04)
>LocalName:= Edit1.Text;
Тут вообще ошибка вомпилятора.
>BufSize:= MAX_PATH*MAX_PATH*MAX_PATH;
Долго думал? А справку читал?var
LocalName: PChar;
iType: DWORD;
Buffer: REMOTE_NAME_INFO;
BufSize: DWORD;
...
LocalName:= PChar(Edit1.Text); //"O:"
iType:= REMOTE_NAME_INFO_LEVEL;
BufSize:= SizeOf(Buffer);
WNetGetUniversalName(LocalName, iType, @Buffer, BufSize);
← →
VMcL © (2004-04-15 16:23) [2]+ Нужен анализ результата вызова функции.
← →
mich (2004-04-15 16:30) [3]2 VMcL:
LocalName:= PChar(Edit1.Text) - очепятался.
А относительно MAX_PATH^3 - три поля REMOTE_NAME_INFO, в которых возвращаются пути.
Значение, которое она возвращает - 0 (NO_ERROR). А как сделать анализ?
← →
VMcL © (2004-04-15 16:34) [4]Вот пример, но на С:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wnet/wnet/determining_the_location_of_a_share.asp
← →
Игорь Шевченко © (2004-04-15 16:41) [5]
> А относительно MAX_PATH^3 - три поля REMOTE_NAME_INFO, в
> которых возвращаются пути
Может быть, MAX_PATH * 3 ? :)))
← →
VMcL © (2004-04-15 16:51) [6]2 mich
procedure TForm1.Button1Click(Sender: TObject);
var
LocalName: PChar;
iType: DWORD;
Buffer: array [0 .. 3 * MAX_PATH + 2] of Char;
BufSize: DWORD;
Res: DWORD;
begin
Memo1.Clear;
LocalName := PChar(Edit1.Text); //"O:"
iType := REMOTE_NAME_INFO_LEVEL;
BufSize := SizeOf(Buffer);
Res := WNetGetUniversalName(LocalName, iType, @Buffer[0], BufSize);
if Res <> NO_ERROR then RaiseLastOSError;
Memo1.Lines.Add(PRemoteNameInfo(@Buffer)^.lpUniversalName);
Memo1.Lines.Add(PRemoteNameInfo(@Buffer)^.lpConnectionName);
Memo1.Lines.Add(PRemoteNameInfo(@Buffer)^.lpRemainingPath);
end;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.052 c