Apdent Гость
|
Добавлено: Чт Июл 01 2004 12:48 Заголовок сообщения: Помогите с NETAPI32.DLL |
|
|
Короче ситуация такая, я делаю программульку для сканирования сетевыхшар.
для этого использую функцию NetShareEnum ,её синтаксис:
Код: |
NetShareEnum :function (ServerName :PWChar;
Level :DWORD;
Bufptr :Pointer;
Prefmaxlen :DWORD;
EntriesRead,
TotalEntries,
resume_handle:LPDWORD): DWORD; stdcall;
|
далее создаю структуру для работы этой функции:
Код: |
type
TShareInfo2 = packed record
shi2_netname : PWChar;
shi2_type : DWORD;
shi2_remark : PWChar;
shi2_permissions : DWORD;
shi2_max_uses : DWORD;
shi2_current_uses : DWORD;
shi2_path : PWChar;
shi2_passwd : PWChar;
end;
PShareInfo2 = ^TShareInfo2;
TShareInfo2Array = array [0..512] of TShareInfo2;
PShareInfo2Array = ^TShareInfo2Array;
|
потом юзаюсь этим всем в таком контексте
Код: |
FLibHandle := LoadLibrary('NETAPI32.DLL');
if FLibHandle = 0 then Exit;
@NetShareEnumNT := GetProcAddress(FLibHandle,'NetShareEnum');
if not Assigned(NetShareEnum) then
begin
FreeLibrary(FLibHandle);
Exit;
end;
ShareNT := nil; //Вызов функции
if NetShareEnum(nil,2,@ShareNT,DWORD(-1),
@entriesread,@totalentries,nil) <> 0 then
begin
FreeLibrary(FLibHandle);
Exit;
end;
if entriesread > 0 then
for i:= 0 to entriesread - 1 do
listbox.Items.Add(String(ShareNT^[i].shi2_netname));
|
и при работе в таком контексте на локальной машине, она всё показывает, но на удалённых нифига не робит.... |
|