Ejemplo n.º 1
0
NTSTATUS VTxEnableProcessors(LONG ProcessorCount)
{
	NTSTATUS status			= STATUS_SUCCESS;
	LONG processorIndex		= 0;

	for (; processorIndex < ProcessorCount; processorIndex++)
	{
		KAFFINITY oldAffinity	= KeSetSystemAffinityThreadEx((KAFFINITY)(1 << processorIndex));
		KIRQL oldIrql			= KeRaiseIrqlToDpcLevel();

		// Enable if possible
		status = VTxSoftwareStatus();

		KeLowerIrql(oldIrql);
		KeRevertToUserAffinityThreadEx(oldAffinity);

		// If it failed, exit
		if (!NT_SUCCESS(status))
			break;
	}

	if (!NT_SUCCESS(status) || processorIndex != ProcessorCount)
	{
		DbgLog("Error: Unable to enable virtualization on all processors\n");
		return status;
	}

	return STATUS_SUCCESS;
}
Ejemplo n.º 2
0
void
platform_restore_affinity(int64_t affinity)
{
    KeRevertToUserAffinityThreadEx((KAFFINITY)(affinity));
}