1
我正在編寫一個模塊來管理與存在該模塊的服務共址的DHCP服務器。如何通過DhcpSAPI啓用DHCP子網
我有代碼在使用DHCP Server API這是能夠創建一個子網並添加DHCP保留。我似乎無法做到的其實是啓用/激活子網範圍。
我曾以爲,DhcpSetSubnetInfo()
會做的工作與DHCP_SUBNET_INFO
結構設置爲DhcpSubnetEnabled
的SubnetState
領域然而,這似乎沒有任何效果。
掃描剩餘的DHCP服務器API我看不到任何其他配置子網/範圍的方法。
有沒有人設法做到這一點?
感謝您的幫助。
Nick。
編輯:
static bool enableSubnet(
const std::wstring& server,
DWORD dwSubnet
)
{
LPDHCP_SUBNET_INFO pInfo = NULL;
DWORD res = DhcpGetSubnetInfo(
server.c_str(),
dwSubnet,
&pInfo
);
if (res != ERROR_SUCCESS)
{
DhcpRpcFreeMemory(pInfo);
return false;
}
if (pInfo->SubnetState == DhcpSubnetEnabled)
{
DhcpRpcFreeMemory(pInfo);
return true;
}
DHCP_SUBNET_INFO info(*pInfo);
info.SubnetState = DhcpSubnetDisabled;
res = DhcpCreateSubnet(server.c_str(), dwSubnet, &info);
DhcpRpcFreeMemory(pInfo);
if (res != ERROR_SUCCESS)
{
return false;
}
res = DhcpGetSubnetInfo(
server.c_str(),
dwSubnet,
&pInfo
);
if (res != ERROR_SUCCESS)
{
DhcpRpcFreeMemory(pInfo);
return false;
}
bool retVal = (pInfo->SubnetState == DhcpSubnetEnabled);
if (!retVal)
{
std::wcerr << L"Failed to enable subnet";
}
DhcpRpcFreeMemory(pInfo);
return retVal;
}
調試代碼,所有的DhcpXX功能通過,但檢查時,該函數返回false:
bool retVal = (pInfo->SubnetState == DhcpSubnetEnabled);
嗨史蒂夫,我編輯了原始帖子,包括代碼。如果該子網最初不存在,則會啓用該子網。 我也嘗試在現有的子網上使用DhcpSetSubnetInfo()。仍然無法啓用它......我想知道這是不可能的! – Nick 2010-11-23 10:09:05