Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.023 c
3-40859
voprosik
2003-10-20 09:52
2003.11.13
Файлы .TPS


14-42016
Kirik
2003-10-17 00:29
2003.11.13
Где взять описание RxLib на русском?


1-41268
Тфьу
2003-11-04 18:14
2003.11.13
Получить реальный цвет.


1-41205
sergious
2003-11-01 23:48
2003.11.13
ProgressBar & ListView


3-40817
bobtubob
2003-10-22 10:58
2003.11.13
Проблемы с ADO в XP