
5 Перелік мережних ресурсів
Термін “перелічувати” (enumerate) означає: складати список подібних об’єктів, наприклад, ресурсів сервера. Для переліку мережних ресурсів в середовищі Delphi можна використовувати такі функції Win32 API.
WnetOpenEnum (dwScope, dwType, dwUsage : DWORD; lpNetResource : TnetResource; var lphEnum : THandle) – відкриває переліку. Тут dwScope – діапазон переліку, що набуває таких значень: RESOURCE_CONNECTED = 1 – підключені в даний час ресурси, RESOURCE_GLOBALNET = 2 – усі ресурси в мережі, RESOURCE_REMEMBERED = 3 – запам’ятовані з'єднання. Параметри dwType – тип ресурсу, dwUsage – тип використання ресурсу, що набуває значення: 0 – усі ресурси, RESOURCEUSAGE_CONNECTABLE = 1 – підключені безпосередньо, RESOURCEUSAGE_CONTAINER = 2 – контейнери. Параметр lpNetResource – покажчик на запис типу TnetResource, що містить опис контейнера для переліку, для root використовують значення nil. Запис TnetResource має такі поля: dwScope : DWORD – діапазон переліку; dwType : DWORD – тип: диск, принтер або інший пристрій; dwDisplayType : DWORD – тип: домен, сервер або точка розподіленого доступу, dwUsage – тип використання: підключений безпосередньо або як контейнер, lpLocalName : PAansiChar – локальне ім'я, lpRemoteName : PAnsiChar - мережне ім'я, lpComment : PAnsiChar – коментар, lpProvider : PAnsiChar – мережний провайдер. Параметр lphEnum – дескриптор ресурсу, повертається функцією.
WnetEnumResource (hEnum : Thandle; var lpCount : DWORD; lpBuffer : Pointer; var lpBufferSize : DWORD) – виконує переліку. Тут lpCount – кількість входів у списку ресурсів, що знаходяться в буфері; lpBuffer – адреса буфера, lpBufferSize – розмір буфера.
6 Приклад переліку ресурсів
Наведемо приклад програми для переліку ресурсів локальної мережі.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure enumerate (p:pointer);
var
lpNR: PNetResource;
hEnum: THandle;
sizeb, cEntries, Result: DWORD;
s1, s2, s3, s4, s5: string;
begin
Result:= WnetOpenEnum (RESOURCE_GLOBALNET, RESOURCETYPE_DISK, 0, p, hEnum);
sizeb:= 16000;
lpNR:= PnetResource (GlobalAlloc (GPTR, sizeb));
cEntries:= 1;
while Result=NO_ERROR do
begin
Result:= WnetEnumResource
(henum, cEntries, lpNR, sizeb);
if Result>0 then
MessageBox (0, ‘Переліку закінчено’, ‘’, 1)
else if Resul=0 then
begin
s1:= StrPas (lpNR^. lpLocalName);
s2:= StrPas (lpNR^.lpRemoteName);
s3:= StrPas (lpNR^.lpComment);
s4:= StrPas (lpNR^.lpProvider);
s5:= IntToStr (lpNR^.dwUsage);
Form1.Memo1.Lines.Add
(s1+’ ,’+s2+’ ,’+s3+’ ,’+s4+’ ,’+s5);
if (lpNR^.dwUsage and
RESOURCEUSAGE_CONTAINER) =RESOURCEUSAGE_CONTAINER
then enumerate (lpNR);
end;
end;
WnetCloseEnum(henum);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
enumerate(nil);
end;
end.
СПИСОК ЛІТЕРАТУРИ
Основна література
Microsoft Corporation. Компьютерные сети. Сертификация Network+: Учебный курс. – М.: Русская редакция,2002. – 704с.
Дарахвелидзе П., Марков Е. Delphi 4. - СПб.: БХВ – Санкт-Петербург, 1998. – 816с.
Олифер В.Г. Компьютерные сети. Принципы, технологии, протоколы. – СПб.: Питер, 2003. – 864с.
Література видавництва СумДУ
Бабій М.С. Локальні мережі ЕОМ:Навчальний посібник. – Суми:СумДУ, 1999. – 64с.
Методические указания к лабораторным работам “Использование сетевых ресурсов Win95”, “Сетевые функции Win32 API”. – Сумы:СумГУ, 1999. – 23с.
Навчальне видання
МЕТОДИЧНІ ВКАЗІВКИ
ДO ВИКОНАНЯ КОНТРОЛЬНОЇ РОБОТИ