Compartilhar via


IOCTL_SRIOV_PROXY_QUERY_LUID IOCTL (pcivirt.h)

Essa solicitação fornece o identificador exclusivo local do dispositivo SR_IOV implementando a interface.

Código principal

IRP_MJ_DEVICE_CONTROL

Buffer de saída

Um ponteiro para uma estrutura de SRIOV_PROXY_QUERY_LUID_OUTPUT preenchida com o identificador.

Comprimento do buffer de saída

O tamanho da estrutura SRIOV_PROXY_QUERY_LUID_OUTPUT

Bloco de status

> Irp-IoStatus.Status será definido como STATUS_SUCCESS se a solicitação for bem-sucedida. Caso contrário, status à condição de erro apropriada como um código de NTSTATUS.

Observações

Essa solicitação IOCTL é enviada pela pilha de virtualização para o driver PF (PCI Express SR-IOV Physical Function) que expõe GUID_DEVINTERFACE_VIRTUALIZABLE_DEVICE.

Essa solicitação IOCTL tem origem no modo de usuário e é manipulada pelo driver de função física (PF) para fornecer o identificador exclusivo local do dispositivo físico. Essa solicitação só é necessária para SR-IOV dispositivos que fazem a atribuição direta.

Antes de enviar essa solicitação, o aplicativo de modo de usuário deve obter um identificador para o dispositivo PCI Express SR-IOV consultando GUID_DEVINTERFACE_VIRTUALIZABLE_DEVICE.

Neste exemplo, o driver PF gera um identificador exclusivo chamando ZwAllocateLocallyUniqueId e o armazena no contexto do dispositivo.



    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;

Requisitos

Requisito Valor
cabeçalho pcivirt.h
IRQL PASSIVE_LEVEL

Consulte também

SRIOV_PROXY_QUERY_LUID_OUTPUT