Partager via


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

> IoStatus.Status est défini sur STATUS_SUCCESS si la requête réussit. Sinon, état à 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 PCI Express SR-IOV Physical Function (PF) 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 requête n’est requise que pour les appareils SR-IOV effectuant une affectation directe.

Avant d’envoyer cette requête, l’application en mode utilisateur doit obtenir un handle à 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;

Exigences

Exigence Valeur
d’en-tête pcivirt.h
IRQL PASSIVE_LEVEL

Voir aussi

SRIOV_PROXY_QUERY_LUID_OUTPUT