DhcpSAPIを通じてDHCPサブネットを有効にする方法
-
27-09-2019 - |
質問
私はモジュールが存在するサービスと同じ場所にDHCPサーバーを管理するためのモジュールを書いています。
私は強いの DHCPサーバーのAPIを使用して所定の位置にコードを持っています> のサブネットを作成し、DHCPの予約を追加することです。私実際に有効/サブネットスコープをアクティブ化されて行うことができるようしていないようです。
私はDhcpSetSubnetInfo( )
がSubnetState
にDHCP_SUBNET_INFO
構造セットのDhcpSubnetEnabled
フィールドで仕事をするだろうと想定していたが、これは効果がないようです。
DHCPサーバーAPI Iの残りをスキャンすると、サブネット/スコープを設定するための任意の他の方法を見ることができません。
誰もがこれを行うために管理していますか?
ご協力いただきありがとうございます。
ニックます。
編集ます:
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機能のすべてが、チェック機能が返すの虚偽のデバッグます:
bool retVal = ( pInfo->SubnetState == DhcpSubnetEnabled );
解決
あなたは、上述したようにDhcpCreateSubnet
フラグを設定してDhcpSubnetEnabled
を呼び出してみましたか?おそらくあなたのコードは、すでにこれを行う - サブネットを作成し、有効にするために失敗した部分を投稿してください。
あなたはあまりにもエラーのためにすべてのあなたのWindowsのAPI呼び出しを確認してください。ここでも、いくつかのコードが失敗するかもしれないものを識別しやすくなります。
所属していません StackOverflow