Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.141.29.145] |
|
Сообщ.
#1
,
|
|
|
Всем привет.
Питаюсь выполнить сканирование устройств локальной сети(точнее lpLocalName) и вывести в консоль,но не выходит,выводится "ERROR WNetOpenEnum" Подскажите,пожалуйста,в чём может быть ошибка? int num = 0; char PC[MAX_PATH][MAX_PATH] = { 0 }; void EnumerateNetworkResources(LPNETRESOURCE pNetResource); int main() { LPNETRESOURCE pNetResource = NULL; EnumerateNetworkResources(pNetResource); for(int i = 0; i < num; i++) printf("%s\r\n", PC[i]); getchar(); return 0; } void EnumerateNetworkResources(LPNETRESOURCE pNetResource) { DWORD dwResult = 0; DWORD dwScope = RESOURCE_GLOBALNET; DWORD dwType = RESOURCETYPE_ANY; DWORD dwUsage = RESOURCEUSAGE_ALL; HANDLE hEnum = INVALID_HANDLE_VALUE; LPHANDLE lphEnum = &hEnum; LPNETRESOURCE lpNetResource = pNetResource; dwResult = WNetOpenEnum(dwScope, dwType, dwUsage, lpNetResource, lphEnum); if (dwResult == NO_ERROR) { DWORD dwCount = -1; DWORD dwBufferSize = 1<<14; LPVOID lpBuffer = (LPVOID)GlobalAlloc(GMEM_FIXED, dwBufferSize); LPNETRESOURCE lpNetRes = NULL; do { memset(lpBuffer, 0, dwBufferSize); dwResult = WNetEnumResource(hEnum, &dwCount, lpBuffer, &dwBufferSize); if (dwResult == NO_ERROR) { for (unsigned int ui = 0; ui < dwCount; ui++) { lpNetRes = (LPNETRESOURCE)lpBuffer; if (lpNetRes[ui].lpLocalName) { strcpy(PC[num], lpNetRes[ui].lpLocalName); num++; } if (lpNetRes[ui].dwUsage & RESOURCEUSAGE_CONTAINER) EnumerateNetworkResources(&lpNetRes[ui]); } } } while(dwResult != ERROR_NO_MORE_ITEMS); if (lpBuffer) GlobalFree(lpBuffer); dwResult = WNetCloseEnum(hEnum); } else { printf("ERROR WNetOpenEnum\r\n"); } } |