Разобрался со своим вопросом, так что не хочу оставлять тему незаконченой то раскажу поподробней, делается енто так, можно с таймером а можно и без, можно просто создать
thread с приоритетом
THREAD_PRIORITY_IDLE в полне достаточно я пробовал либо
THREAD_PRIORITY_LOWEST. Использовать над АПИшную функцию
NetShareEnum, в NT осях она находится в
NETAPI32.DLL в 95/98/МЕ
SVRAPI.DLL. Сечас раскажу про NT оси про остальные попоже т.к. есть отличия.
Прототип
NetShareEnum:
NET_API_STATUS NetShareEnum(
LPWSTR servername,
DWORD level,
LPBYTE * bufptr,
DWORD prefmaxlen,
LPDWORD entriesread,
LPDWORD totalentries,
LPDWORD resume_handle,
);
В
bufptr отдается указатель на одну из следующих структур:
typedef struct _SHARE_INFO_0 {
LPWSTR shi0_netname;
} SHARE_INFO_0, *PSHARE_INFO_0, *LPSHARE_INFO_0;
Members
shi0_netnameA Unicode string containing the sharename of a resource.
level = 0
=====================================================
typedef struct _SHARE_INFO_1 {
LPWSTR shi1_netname;
DWORD shi1_type;
LPWSTR shi1_remark;
} SHARE_INFO_1, *PSHARE_INFO_1, *LPSHARE_INFO_1;
Members
shi1_netnameA Unicode string containing the sharename of a resource.
shi1_typeThis member can be one of following types. Value Meaning
STYPE_DISKTREE Disk drive
STYPE_PRINTQ Print queue
STYPE_DEVICE Communication device
STYPE_IPC Interprocess Communication (IPC)
shi1_remarkPoints to a Unicode string containing an optional comment about the shared resource
level = 1, соответственно
=====================================================
typedef struct _SHARE_INFO_2 {
LPWSTR shi2_netname;
DWORD shi2_type;
LPWSTR shi2_remark;
DWORD shi2_permissions;
DWORD shi2_max_uses;
DWORD shi2_current_uses;
LPWSTR shi2_path;
LPWSTR shi2_passwd;
} SHARE_INFO_2, *PSHARE_INFO_2, *LPSHARE_INFO_2;
Members
shi2_netnameA Unicode string containing the sharename of a resource.
shi2_type This member can be one of the following types: Value Meaning
STYPE_DISKTREE Disk drive
STYPE_PRINTQ Print queue
STYPE_DEVICE Communication device
STYPE_IPC Interprocess Communication (IPC)
shi2_remarkPoints to a Unicode string that contains an optional comment about the shared resource.
shi2_permissionsSpecifies the shared resource's permissions for servers running with share-level security. A server running user-level security ignores this member.This member can be one or more of the following values. Value Meaning
ACCESS_READ Permission to read data from a resource and, by default, to execute the resource.
ACCESS_WRITE Permission to write data to the resource.
ACCESS_CREATE Permission to create an instance of the resource (such as a file); data can be written to the resource as the resource is created.
ACCESS_EXEC Permission to execute the resource.
ACCESS_DELETE Permission to delete the resource.
ACCESS_ATRIB Permission to modify the resource's attributes (such as the date and time when a file was last modified).
ACCESS_PERM Permission to modify the permissions (read, write, create, execute, and delete) assigned to a resource for a user or application.
ACCESS_ALL Permission to read, write, create, execute, and delete resources, and to modify their attributes and permissions.
shi2_max_uses Indicates the maximum number of concurrent connections that the shared resource can accommodate (unlimited if the value specified in shi2_max_uses is -1).
shi2_current_uses Specifies the number of current connections to the resource.
shi2_pathPoints to a Unicode string containing the local path for the shared resource. For disks, shi2_path is the path being shared. For print queues, shi2_path is the name of the print queue being shared.
shi2_passwd Specifies the share's password (when the server is running with share-level security). If the server is running with user-level security, shi2_passwd is ignored. The shi2_passwd member can be no longer than SHPWLEN+1 bytes (including a terminating null character).
level = 2
=====================================================
typedef struct _SHARE_INFO_502 {
LPWSTR shi502_netname;
DWORD shi502_type;
LPWSTR shi502_remark;
DWORD shi502_permissions;
DWORD shi502_max_uses;
DWORD shi502_current_uses;
LPWSTR shi502_path;
LPWSTR shi502_passwd;
DWORD shi502_reserved;
PSECURITY_DESCRIPTOR shi502_security_descriptor;
} SHARE_INFO_502, *PSHARE_INFO_502, *LPSHARE_INFO_502;
Members
shi502_netname A Unicode string containing the sharename of a resource.
shi502_type One of the following four values specifying the type of share: Value Meaning
STYPE_DISKTREE Disk Drive
STYPE_PRINTQ Print Queue
STYPE_DEVICE Communication device
STYPE_IPC Interprocess Communication (IPC)
shi502_remark Points to a Unicode string containing an optional comment about the shared resource.
shi502_permissions Specifies the shared resource's permissions for servers running with share-level security.This member is ignored on a server running user-level security. This member can be any of the following values: Value Meaning
ACCESS_READ Permission to read data from a resource and, by default, to execute the resource.
ACCESS_WRITE Permission to write data to the resource.
ACCESS_CREATE Permission to create an instance of the resource (such as a file); data can be written to the resource as the resource is created.
ACCESS_EXEC Permission to execute the resource.
ACCESS_DELETE Permission to delete the resource.
ACCESS_ATRIB Permission to modify the resource's attributes (such as the date and time when a file was last modified).
ACCESS_PERM Permission to modify the permissions (read, write, create, execute, and delete) assigned to a resource for a user or application.
ACCESS_ALL Permission to read, write, create, execute, and delete resources, and to modify their attributes and permissions.
shi502_max_uses Indicates the maximum number of concurrent connections that the shared resource can accommodate (unlimited if the value specified in shi502_max_uses is -1).
shi502_current_uses Specifies the number of current connections to the resource.
shi502_path Points to a Unicode string that contains the local path for the shared resource. For disks, shi502_path is the path being shared. For print queues, shi502_path is the name of the print queue being shared.
shi502_passwd Specifies the share's password (when the server is running with share-level security). If the server is running with user-level security, shi502_passwd is ignored. The shi502_passwd member can be no longer than SHPWLEN+1 bytes (including a terminating null character).
shi502_reserved Must be zero.
shi502_security_descriptor Specifies the security descriptor associated with this share.
level = 502
=====================================================
Как видно
level указывает какого типа переданный указатель, прошу заметить что передается пустой указатель, память под него выделать не надо, но вот после удачного вызова функции не забудьте освободить его.
Также рекомендую после каждого вызова функции и обработки полученных структур вызвать
Sleep (2000) в данном случае будет 2 секунды, думаю можно увеличить т.к. попробуцте зашарить чтото и посмотрите сколько енто времени занимает, уменя заняло секунд 12 ет без дополнительных настроек, так что и 10000 т.е. 10 секунд мы можем поспать т.е. частота обновления будет 6 раз за минуту, вполне достаточно но ет на ваше усмотрение.
Вот и таймера не надо
, и ресурсов мало потребляем!