Текущий архив: 2003.11.13;
Скачать: CL | DM;
ВнизКак использовать функции NetFileGetInfo и netFileEnum Найти похожие ветки
← →
waw (2003-09-03 19:11) [0]Как использовать функции NetFileGetInfo и netFileEnum для определения пользователя, которым был открыт файл?
← →
Игорь Шевченко (2003-09-04 10:14) [1]Например, так:
procedure TfrmMain.PrintNetFiles;
type
PFileInfo3 = ^TFileInfo3;
var curw : PFileInfo3;
bufw : Pointer;
rc, read, total, resumeh : Cardinal;
I : Integer;
LI : TListItem;
begin
lvFiles.Items.Clear();
resumeh := 0;
repeat
bufw := nil;
rc := NetFileEnum(LPWSTR(FServerName), nil, nil, 3,
bufw, 2048, read, total, @resumeh);
if (rc <> ERROR_MORE_DATA) AND (rc <> ERROR_SUCCESS) then
Break;
curw := PFileInfo3(bufw);
for I:=0 to Pred(read) do begin
LI := lvFiles.Items.Add();
LI.Caption := curw^.fi3_username;
LI.SubItems.Add(curw^.fi3_pathname);
Inc(curw);
end;
if bufw <> nil then
NetApiBufferFree(Pointer(bufw));
until rc <> ERROR_MORE_DATA;
if (rc <> ERROR_SUCCESS) then
RaiseLastWin32Error;
end;
← →
waw (2003-09-04 12:30) [2]
type
TFILE_INFO_2 = record
fi2_id: DWORD;
end;
TFILE_INFO_3 = record
fi3_id: DWORD;
fi3_permissions: DWORD;
fi3_num_locks: DWORD;
fi3_pathname: LPTSTR;
fi3_username: LPTSTR;
end;
PFILE_INFO_3 = ^TFILE_INFO_3;
function NetFileEnum(
servername: PChar;
basepath: PChar;
username: PChar;
level: DWORD;
bufptr: Pointer;
prefmaxlen: DWORD;
var entriesread: DWORD;
totalentries: DWORD;
resume_handle: DWORD
): DWORD; stdcall; external NetAPI32 name "NetFileEnum";
Описание функции примерно такое?
← →
Игорь Шевченко (2003-09-04 12:41) [3]type
NET_API_STATUS = Integer;
PFileInfo2 = ^TFileInfo2;
_FILE_INFO_2 = record
fi2_id: DWORD;
end;
TFileInfo2 = _FILE_INFO_2;
FILE_INFO_2 = _FILE_INFO_2;
PFileInfo3 = ^TFileInfo3;
_FILE_INFO_3 = record
fi3_id: DWORD;
fi3_permissions: DWORD;
fi3_num_locks: DWORD;
fi3_pathname: LPWSTR;
fi3_username: LPWSTR;
end;
TFileInfo3 = _FILE_INFO_3;
FILE_INFO_3 = _FILE_INFO_3;
TNetFileEnum = function (servername: LPWSTR; basepath: LPWSTR; username: LPWSTR;
level: DWORD; var bufptr: Pointer; prefmaxlen: DWORD; var entriesread: DWORD;
var totalentries: DWORD; resume_handle: PDWORD): NET_API_STATUS; stdcall;
← →
waw (2003-09-04 12:56) [4]System ERROR code:997
Протекает наложенное событие ввода/вывода.
← →
waw (2003-09-04 12:58) [5]Может по аське? 107640544
← →
waw (2003-09-04 13:13) [6]Огромное спасибо. Все заработало, разобрался.
← →
waw (2003-09-04 14:05) [7]И все-таки ошибка:
System ERROR code:997
Протекает наложенное событие ввода/вывода.
Возникает на некоторых серверах. С чем это может быть связано?
← →
Игорь Шевченко (2003-09-04 14:57) [8]К файлу наверное кто-то обращается в момент перечисления...
← →
waw (2003-09-04 15:28) [9]Если запускать локаольно такой ошиблки не дает.
И еще какого типа у тебя FServerName. Мне не удается переменную передать в эту процедуру.
← →
Игорь Шевченко (2003-09-04 16:01) [10]FServerName : WideString;
Страницы: 1 вся ветка
Текущий архив: 2003.11.13;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.027 c