モジュールが存在するサービスと同じ場所にあるDHCPサーバーを管理するモジュールを作成しています。DhcpSAPIでDHCPサブネットを有効にする方法
私はサブネットを作成してDHCP予約を追加できるDHCP Server APIを使用してコードを用意しています。私ができないように思われるのは、実際にサブネットスコープを有効/有効にすることです。私はDhcpSetSubnetInfo()
がDhcpSubnetEnabled
に設定DHCP_SUBNET_INFO
構造のSubnetState
分野で仕事をするだろうと想定していた
は、しかし、これは効果がないようです。
残りのDHCPサーバーAPIをスキャンするサブネット/スコープを構成するための方法は他にありません。
誰でもこれを行うことができましたか?
ありがとうございました。
ニック。
編集:
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