Condividi tramite


IOCTL_SRIOV_PROXY_QUERY_LUID IOCTL (pcivirt.h)

Questa richiesta fornisce l'identificatore univoco locale del dispositivo SR_IOV che implementa l'interfaccia.

Codice principale

IRP_MJ_DEVICE_CONTROL

Buffer di output

Puntatore a una struttura SRIOV_PROXY_QUERY_LUID_OUTPUT riempita con l'identificatore.

Lunghezza del buffer di output

Dimensioni della struttura SRIOV_PROXY_QUERY_LUID_OUTPUT

Blocco di stato

Irp-> IoStatus.Status è impostato su STATUS_SUCCESS se la richiesta ha esito positivo. In caso contrario, stato alla condizione di errore appropriata come codice NTSTATUS.

Osservazioni

Questa richiesta IOCTL viene inviata dallo stack di virtualizzazione al driver PCI Express SR-IOV Physical Function (PF) che espone GUID_DEVINTERFACE_VIRTUALIZABLE_DEVICE.

Questa richiesta IOCTL ha origine nella modalità utente e viene gestita dal driver della funzione fisica (PF) per fornire l'identificatore univoco locale del dispositivo fisico. Questa richiesta è necessaria solo per i dispositivi SR-IOV che eseguono l'assegnazione diretta.

Prima di inviare questa richiesta, l'applicazione in modalità utente deve ottenere un handle per il dispositivo PCI Express SR-IOV eseguendo una query per GUID_DEVINTERFACE_VIRTUALIZABLE_DEVICE.

In questo esempio, il driver PF genera un identificatore univoco chiamando ZwAllocateLocallyUniqueId e lo archivia nel contesto del 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;

Fabbisogno

Requisito Valore
intestazione pcivirt.h
IRQL PASSIVE_LEVEL

Vedere anche

SRIOV_PROXY_QUERY_LUID_OUTPUT