|
引用 21 楼 suwyhoho 的回复:
BOOL
DoNdisIOControl(
? ? ? ? DWORD? dwCommand,
? ? ? ? LPVOID? pInBuffer,
? ? ? ? DWORD? cbInBuffer,
? ? ? ? LPVOID? pOutBuffer,
? ? ? ? DWORD? *pcbOutBuffer)
{
? HANDLE? hNdis;
? BOOL? ? bResult = FALSE;
? hNdis =? CreateFile(
? ? ? ? ? ? ? ? DD_NDIS_DEVICE_NAME,
? ? ? ? ? ? ? ? GENERIC_READ | GENERIC_WRITE,
? ? ? ? ? ? ? ? FILE_SHARE_READ | FILE_SHARE_WRITE,
? ? ? ? ? ? ? ? NULL,
? ? ? ? ? ? ? ? OPEN_ALWAYS,
? ? ? ? ? ? ? ? 0,
? ? ? ? ? ? ? ? NULL);
? if (INVALID_HANDLE_VALUE != hNdis)
? {
? ? ? bResult = DeviceIoControl(
? ? ? ? ? ? ? ? ? ? hNdis,
? ? ? ? ? ? ? ? ? ? dwCommand,
? ? ? ? ? ? ? ? ? ? pInBuffer,
? ? ? ? ? ? ? ? ? ? cbInBuffer,
? ? ? ? ? ? ? ? ? ? pOutBuffer,
? ? ? ? ? ? ? ? ? ? (pcbOutBuffer ? *pcbOutBuffer : 0x00),
? ? ? ? ? ? ? ? ? ? pcbOutBuffer,
? ? ? ? ? ? ? ? ? ? NULL);
? ? ? ? ? ? ? ? ? ?
? ? ? ? CloseHandle(hNdis);
? }
? return bResult;
?
}
? ? ? ? ? ? nChars = _sntprintf(
? ? ? ? ? ? ? ? ? ? ? ? szName,
? ? ? ? ? ? ? ? ? ? ? ? MAX_PATH-1,
? ? ? ? ? ? ? ? ? ? ? ? _T("%s\\%s"),
? ? ? ? ? ? ? ? ? ? ? ? PMCLASS_NDIS_MINIPORT,
? ? ? ? ? ? ? ? ? ? ? ? ptcDeviceName);
? ? ? ? ? ? if (nChars != -1)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? DEBUGMSG (ZONE_NDISUIO,
? ? ? ? ? ? ? ? ? ? (TEXT("NdisPower:: Setting adapter [%s] to Power State [%s].\r\n"),
? ? ? ? ? ? ? ? ? ? ptcDeviceName,
? ? ? ? ? ? ? ? ? ? (CePowerState == D0) ? TEXT("D0") :
? ? ? ? ? ? ? ? ? ? (CePowerState == D1) ? TEXT("D1") :
? ? ? ? ? ? ? ? ? ? (CePowerState == D2) ? TEXT("D2") :
? ? ? ? ? ? ? ? ? ? (CePowerState == D3) ? TEXT("D3") :
? ? ? ? ? ? ? ? ? ? (CePowerState == D4) ? TEXT("D4") :
? ? ? ? ? ? ? ? ? ? (CePowerState == PwrDeviceUnspecified) ? TEXT("PwrDeviceUnspecified") :? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? TEXT("UNKNOWN!")));
? ? ? ? ? ? ? ? SetDevicePower(szName, POWER_NAME, CePowerState);
? ? ? ? ? ? }
? ? ? ? ? ? //
? ? ? ? ? ? //? IOCTL_NDIS_UNBIND_ADAPTER takes multisz (protocol driver names
? ? ? ? ? ? //? follow the adapter name) hence we need extra NULL.
? ? ? ? ? ? //
? ? ? ? ? ?
? ? ? ? ? ? memset (szName, 0x00, sizeof(szName));
? ? ? ? ? ? _tcscpy(szName, ptcDeviceName);
? ? ? ? ? ? DoNdisIOControl(
? ? ? ? ? ? ? ? IOCTL_NDIS_UNBIND_ADAPTER,
? ? ? ? ? ? ? ? szName,
? ? ? ? ? ? ? ? (_tcslen(ptcDeviceName)+2) * sizeof(TCHAR),
? ? ? ? ? ? ? ? NULL,
? ? ? ? ? ? ? ? NULL);
这段是先关设备再UNBIND的代码,希望对你有帮助
太感谢了,痛哭流涕。 |
|