in netcx/adapter/nxadapter.cpp [4140:4177]
void NxAdapter::ReportWakeReasonMediaChange(
NET_IF_MEDIA_CONNECT_STATE Reason
) const
{
Verifier_VerifyNetPowerUpTransition(GetPrivateGlobals(), GetNxDeviceFromHandle(m_device));
LogInfo(FLAG_POWER,
"NETADAPTER %p reported wake. Reason: Media state change (%!NET_IF_MEDIA_CONNECT_STATE!)",
GetFxObject(),
Reason);
NDIS_PM_WAKE_REASON wakeReason;
wakeReason.Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
wakeReason.Header.Revision = NDIS_PM_WAKE_REASON_REVISION_1;
wakeReason.Header.Size = NDIS_SIZEOF_PM_WAKE_REASON_REVISION_1;
switch (Reason)
{
case MediaConnectStateDisconnected:
wakeReason.WakeReason = NdisWakeReasonMediaDisconnect;
break;
case MediaConnectStateConnected:
wakeReason.WakeReason = NdisWakeReasonMediaConnect;
break;
default:
Verifier_ReportViolation(
GetPrivateGlobals(),
VerifierAction_BugcheckAlways,
FailureCode_InvalidNetAdapterWakeReasonMediaChange,
0,
0);
}
wakeReason.InfoBufferOffset = 0;
wakeReason.InfoBufferSize = 0;
auto wakeIndication = MakeNdisStatusIndication(
m_ndisAdapterHandle, NDIS_STATUS_PM_WAKE_REASON, wakeReason);
NdisMIndicateStatusEx(m_ndisAdapterHandle, &wakeIndication);
}