سؤال

أنا أكتب وحدة نمطية لإدارة خادم DHCP مشترك مع الخدمة التي توجد فيها الوحدة النمطية.

لدي رمز في مكانه باستخدام DHCP Server API وهو قادر على إنشاء شبكة فرعية وإضافة تحفظات DHCP. ما لا يبدو أنني قادر على فعله هو تمكين/تنشيط نطاق الشبكة الفرعية.

لقد افترضت ذلك DhcpSetSubnetInfo( ) سيفعل المهمة مع SubnetState مجال DHCP_SUBNET_INFO هيكل تعيين ل DhcpSubnetEnabled ومع ذلك يبدو أن هذا ليس له أي تأثير.

مسح من خلال بقية واجهة برمجة تطبيقات خادم DHCP ، لا يمكنني رؤية أي طرق أخرى لتكوين شبكات فرعية/نطاقات.

هل تمكن أي شخص من القيام بذلك؟

شكرا لمساعدتك.

نيك.

تعديل:

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 الخاصة بك للأخطاء أيضًا. مرة أخرى ، ستساعد بعض التعليمات البرمجية في تحديد ما قد يفشل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top