2010-11-22 6 views
1

モジュールが存在するサービスと同じ場所にある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); 

答えて

0

あなたはのように設定DhcpSubnetEnabledフラグでDhcpCreateSubnetを呼び出してみました上記の?おそらくあなたのコードが既にこれを行います - サブネットの作成と有効化に失敗した部分を投稿します。

すべてのWindows APIでエラーが発生していないかどうかを確認してください。繰り返しますが、何らかのコードが何が失敗しているのかを特定するのに役立ちます。

+0

スティーブ、元の投稿を編集してコードを追加しました。サブネットが最初に存在しない場合、サブネットは有効になります。 私はDhcpSetSubnetInfo()を既存のサブネットで使用しようとしました。まだそれを有効にすることができません...私はそれが可能ではないかと思っています! – Nick

関連する問題