IOCTL_SRIOV_PROXY_QUERY_LUID IOCTL (pcivirt.h)

Cette demande fournit l’identificateur unique local de l’appareil SR_IOV implémentant l’interface.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon de sortie

Pointeur vers une structure SRIOV_PROXY_QUERY_LUID_OUTPUT remplie avec l’identificateur.

Longueur de la mémoire tampon de sortie

Taille de la structure SRIOV_PROXY_QUERY_LUID_OUTPUT

Bloc d’état

Irp->IoStatus.Status est défini sur STATUS_SUCCESS si la demande réussit. Sinon, indiquez la condition d’erreur appropriée en tant que code NTSTATUS .

Remarques

Cette demande IOCTL est envoyée par la pile de virtualisation au pilote DE fonction physique (PF) PCI Express Express SR-IOV qui expose GUID_DEVINTERFACE_VIRTUALIZABLE_DEVICE.

Cette demande IOCTL provient du mode utilisateur et est gérée par le pilote de fonction physique (PF) afin de fournir l’identificateur unique local de l’appareil physique. Cette demande n’est requise que pour les appareils SR-IOV qui effectuent une affectation directe.

Avant d’envoyer cette requête, l’application en mode utilisateur doit obtenir un handle pour l’appareil PCI Express SR-IOV en interrogeant GUID_DEVINTERFACE_VIRTUALIZABLE_DEVICE.

Dans cet exemple, le pilote PF génère un identificateur unique en appelant ZwAllocateLocallyUniqueId et le stocke dans le contexte de l’appareil.



    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;

Configuration requise

Condition requise Valeur
En-tête pcivirt.h
IRQL PASSIVE_LEVEL

Voir aussi

SRIOV_PROXY_QUERY_LUID_OUTPUT