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