能帮我看一下以下的程序段吗?什么功能?BOOLEAN PacketGetNetInfoEx(
LPTSTR AdapterName, PULONG netp, PULONG maskp, PULONG defp, bool *dhcpFlag)
{
char *AdapterNameA;
WCHAR *AdapterNameU;
WCHAR (*ifname);
HKEY SystemKey;
HKEY ControlSetKey;
HKEY ServicesKey;
HKEY InterfaceKey;
HKEY ParametersKey;
HKEY TcpIpKey;
LONG status;
// WCHAR String[1024+1];
DWORD RegType;
ULONG BufLen;
DWORD DHCPEnabled; char string[1024+1];
char _charIfName[100];
int k, ifnameLen; EnterCriticalSection(&critSec_PacketGetNetInfoEx); *dhcpFlag = false; AdapterNameA = (char*)AdapterName;
if(AdapterNameA[1] != 0) { //ASCII
AdapterNameU = SChar2WChar(AdapterNameA);
AdapterName = (char *)AdapterNameU;
} else { //Unicode
AdapterNameU = NULL;
} ifname =  wcsrchr((unsigned short *)AdapterName, '\\');
if (ifname == NULL)
ifname = (unsigned short *)AdapterName;
else
ifname++;

if (wcsncmp(ifname, L"Packet_", 7) == 0)
ifname += 7; status = RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SYSTEM"),0,KEY_READ,&SystemKey);
if (status != ERROR_SUCCESS)
goto fail;

status = RegOpenKeyEx(SystemKey,TEXT("CurrentControlSet"),0,KEY_READ,&ControlSetKey);
if (status != ERROR_SUCCESS) {
RegCloseKey(SystemKey);
goto fail;
}
RegCloseKey(SystemKey); status = RegOpenKeyEx(ControlSetKey,TEXT("Services"),0,KEY_READ,&ServicesKey);
if (status != ERROR_SUCCESS) {
RegCloseKey(ControlSetKey);
goto fail;
}
RegCloseKey(ControlSetKey); ifnameLen = wcslen(ifname);

memset(_charIfName, 0, sizeof(_charIfName)); for(k = 0; k < ifnameLen; k++)
{
_charIfName[k] = *ifname++;
}
status = RegOpenKeyEx(ServicesKey,_charIfName,0,KEY_READ,&InterfaceKey);
if (status != ERROR_SUCCESS) {
RegCloseKey(ServicesKey);
goto fail;
}
RegCloseKey(ServicesKey);

status = RegOpenKeyEx(InterfaceKey,TEXT("Parameters"),0,KEY_READ,&ParametersKey);
if (status != ERROR_SUCCESS) {
RegCloseKey(InterfaceKey);
goto fail;
}
RegCloseKey(InterfaceKey);

status = RegOpenKeyEx(ParametersKey,TEXT("TcpIp"),0,KEY_READ,&TcpIpKey);
if (status != ERROR_SUCCESS) {
RegCloseKey(ParametersKey);
goto fail;
}
RegCloseKey(ParametersKey); // IP Address
BufLen = sizeof string;
status = RegQueryValueEx(TcpIpKey,TEXT("IPAddress"),NULL,&RegType,(LPBYTE)string,&BufLen);
if (status != ERROR_SUCCESS) {
RegCloseKey(TcpIpKey);
goto fail;
}
*netp = inet_addr(string); // DefaultGateway
BufLen = sizeof string;
status = RegQueryValueEx(TcpIpKey,TEXT("DefaultGateway"),NULL,&RegType,(LPBYTE)string,&BufLen);
if (status != ERROR_SUCCESS) {
RegCloseKey(TcpIpKey);
goto fail;
}
*defp = inet_addr(string); // SubnetMask
BufLen = sizeof string;
status=RegQueryValueEx(TcpIpKey,TEXT("SubnetMask"),NULL,&RegType,(LPBYTE)string,&BufLen);
if (status != ERROR_SUCCESS) {
RegCloseKey(TcpIpKey);
goto fail;
}
*maskp = inet_addr(string); /* See if DHCP is used by this system */
BufLen = 4;
status=RegQueryValueEx(TcpIpKey,TEXT("EnableDHCP"),NULL,&RegType,(LPBYTE)&DHCPEnabled,&BufLen);
if (status == ERROR_SUCCESS) { /* Retrieve the netmask */
if(DHCPEnabled){

*dhcpFlag = true; // DHCP IP Address
BufLen = sizeof string;
status=RegQueryValueEx(TcpIpKey,TEXT("DhcpIPAddress"),NULL,&RegType,
(LPBYTE)string, &BufLen);
if (status != ERROR_SUCCESS) {
RegCloseKey(TcpIpKey);
goto fail;
} *netp = inet_addr(string);

// DHCP DefaultGateway
BufLen = sizeof string;
status=RegQueryValueEx(TcpIpKey,TEXT("DhcpDefaultGateway"),NULL,&RegType,
(LPBYTE)string,&BufLen);
if (status != ERROR_SUCCESS) {
RegCloseKey(TcpIpKey);
goto fail;
} *defp = inet_addr(string);

// DHCP SubnetMask
BufLen = sizeof string;
status=RegQueryValueEx(TcpIpKey,TEXT("DHCPSubnetMask"),NULL,&RegType,
(LPBYTE)string,&BufLen); if (status != ERROR_SUCCESS) {
RegCloseKey(TcpIpKey);
goto fail;
} *maskp = inet_addr(string);
}
} if (AdapterNameU != NULL)
free(AdapterNameU); LeaveCriticalSection(&critSec_PacketGetNetInfoEx);
return TRUE;
fail:
if (AdapterNameU != NULL)
free(AdapterNameU); LeaveCriticalSection(&critSec_PacketGetNetInfoEx);
    return FALSE;
}
BOOLEAN PacketGetNetInfo2(
LPTSTR AdapterName, PULONG netp, PULONG maskp)
{
ULONG defp;
bool dhcpFlag; return PacketGetNetInfoEx(AdapterName, netp, maskp, &defp, &dhcpFlag);
}