モジュールが存在するサービスと同じ場所にある DHCP サーバーを管理するためのモジュールを作成しています。
サブネットを作成して DHCP 予約を追加できるDHCP サーバー APIを使用するコードを用意しました。私ができないように見えるのは、実際にサブネットスコープを有効化/アクティブ化することです。
構造体のフィールドをに設定しDhcpSetSubnetInfo( )
て仕事をするだろうと思っていましたが、これは効果がないようです。SubnetState
DHCP_SUBNET_INFO
DhcpSubnetEnabled
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 );