- Windows Network Management API
- ¸ñ·Ï
- ÁöÁ¤µÈ ÄÄÇ»ÅÍÀÇ °øÀ¯ ¸ñ·Ï Ç¥½ÃÇϱâ
- ¸µÅ©
1 Windows Network Management API
À©µµ¿ìÁî¿¡¼ ÀÚÁÖ »ç¿ëÇÏ´Â "°øÀ¯" ±â´É°ú °ü·ÃµÈ ÇÔ¼öµéÀÌ´Ù. Ãß°¡·Î °èÁ¤ °ü¸®µµ °¡´ÉÇÏ´Ù. Win9X ½Ã¸®Áî´Â 2000 ÀÌ»ó ¹öÀü°ú ÀÎÅÍÆäÀ̽º°¡ ¾à°£ Ʋ¸®´Ù. ÀÚ¼¼ÇÑ »çÇ×Àº MSDNÀ» Âü°í.
±×·±µ¥... µµ´ëü ¾îµð´Ù ½á¸ÔÁö? °ÔÀÓ ¼¹ö¶û °ü·Ã ÀÖ³ª?
2 ¸ñ·Ï
2.1 ÁöÁ¤µÈ ÄÄÇ»ÅÍÀÇ °øÀ¯ ¸ñ·Ï Ç¥½ÃÇϱâ
#include <LM.h>
#pragma comment(lib, "Netapi32.lib")
void show_share(const char* path)
{
wchar_t lpszServer[1024+1] = {0, };
::mbstowcs(lpszServer, path, 1024);
NET_API_STATUS res = 0;
do
{
PSHARE_INFO_1 pShareInfo, p;
DWORD entries_read = 0, total_entries = 0, resume = 0;
res = ::NetShareEnum (lpszServer,
1, reinterpret_cast<LPBYTE*>(&pShareInfo),
0xFFFFFFFF, &entries_read, &total_entries, &resume);
if (res == ERROR_SUCCESS || res == ERROR_MORE_DATA)
{
p = pShareInfo;
for (DWORD i=1; i <= entries_read; i++, p++)
{
wprintf(L"%s -- ", p->shi1_netname);
switch (p->shi1_type)
{
case STYPE_DISKTREE: wprintf(L"Disk drive"); break;
case STYPE_PRINTQ: wprintf(L"Print queue"); break;
case STYPE_DEVICE: wprintf(L"Communication device"); break;
case STYPE_IPC: wprintf(L"Interprocess communication (IPC)"); break;
case STYPE_SPECIAL: wprintf(L"Special share"); break;
case STYPE_TEMPORARY: wprintf(L"A temporary share"); break;
default: wprintf(L"Unknown type"); break;
}
wprintf(L"\n", p->shi1_netname);
}
// Free the allocated buffer.
::NetApiBufferFree(pShareInfo);
}
else { wprintf(L"Error: %ld\n", res); }
} while (res==ERROR_MORE_DATA);
}
...
show_share("\\\\BACKUP_SERVER");
3 ¸µÅ©
SeriousMoin v1 (koMoinMoin 1.0a4 Modified)