IOCTL_SRIOV_PROXY_QUERY_LUID IOCTL (pcivirt.h)
Этот запрос предоставляет локальный уникальный идентификатор устройства SR_IOV, реализующего интерфейс.
Основной код
Выходной буфер
Указатель на структуру SRIOV_PROXY_QUERY_LUID_OUTPUT, заполненную идентификатором.
Длина выходного буфера
Размер структуры SRIOV_PROXY_QUERY_LUID_OUTPUT
Блок состояния
Irp->IoStatus.Status STATUS_SUCCESS, если запрос выполнен успешно. В противном случае состояние соответствующего условия ошибки в качестве кода NTSTATUS.
Замечания
Этот запрос IOCTL отправляется стеком виртуализации в драйвер SR-IOV физической функции (PF) PCI Express, который предоставляет GUID_DEVINTERFACE_VIRTUALIZABLE_DEVICE.
Этот запрос IOCTL создается в пользовательском режиме и обрабатывается драйвером физической функции (PF), чтобы предоставить локальный уникальный идентификатор физического устройства. Этот запрос требуется только для SR-IOV устройств, выполняя прямое назначение.
Перед отправкой этого запроса приложение пользовательского режима должно получить дескриптор на устройство PCI Express SR-IOV, запрашивая GUID_DEVINTERFACE_VIRTUALIZABLE_DEVICE.
В этом примере драйвер PF создает уникальный идентификатор, вызывая ZwAllocateLocallyUniqueId и сохраняет его в контексте устройства.
case IOCTL_SRIOV_PROXY_QUERY_LUID:
status = WdfRequestRetrieveOutputBuffer(Request,
sizeof(LUID),
&luid,
NULL);
if (!NT_SUCCESS(status))
{
break;
}
RtlCopyMemory(luid, &deviceContext->Luid, sizeof(LUID));
WdfRequestSetInformation(Request, sizeof(LUID));
status = STATUS_SUCCESS;
break;
Требования
Требование | Ценность |
---|---|
заголовка | pcivirt.h |
IRQL | PASSIVE_LEVEL |