كيفية تمكين الشبكة الفرعية DHCP من خلال DHCPSAPI
-
27-09-2019 - |
سؤال
أنا أكتب وحدة نمطية لإدارة خادم 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 الخاصة بك للأخطاء أيضًا. مرة أخرى ، ستساعد بعض التعليمات البرمجية في تحديد ما قد يفشل.