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
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 |