Поделиться через


IOCTL_SRIOV_PROXY_QUERY_LUID IOCTL (pcivirt.h)

Этот запрос предоставляет локальный уникальный идентификатор устройства SR_IOV, реализующего интерфейс.

Основной код

IRP_MJ_DEVICE_CONTROL

Выходной буфер

Указатель на структуру 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

См. также

SRIOV_PROXY_QUERY_LUID_OUTPUT