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