Fonction UfxDeviceIoControl (ufxclient.h)
Transmet les IOCTL non internes du mode utilisateur à UFX.
Syntaxe
BOOLEAN UfxDeviceIoControl(
[in] UFXDEVICE UfxDevice,
[in] WDFREQUEST Request,
[in] size_t OutputBufferLength,
[in] size_t InputBufferLength,
[in] ULONG IoControlCode
);
Paramètres
[in] UfxDevice
Handle vers un objet de périphérique UFX que le pilote a créé en appelant UfxDeviceCreate.
[in] Request
Handle pour un objet de requête d’infrastructure.
[in] OutputBufferLength
Longueur, en octets, de la mémoire tampon de sortie de la requête, si une mémoire tampon de sortie est disponible.
[in] InputBufferLength
Longueur, en octets, de la mémoire tampon d’entrée de la requête, si une mémoire tampon d’entrée est disponible.
[in] IoControlCode
IOCTL défini par le pilote ou défini par le système qui est associé à la requête.
Valeur retournée
Valeur booléenne indiquant si l’appel a réussi.
Remarques
Le pilote client appelle UfxDeviceIoControl pour transférer les IOCTL non internes qu’il reçoit dans sa fonction de rappel EvtIoDeviceControl à UFX. L’exemple suivant montre comment :
VOID
DefaultQueue_EvtIoDeviceControl(
_In_ WDFQUEUE Queue,
_In_ WDFREQUEST Request,
_In_ size_t OutputBufferLength,
_In_ size_t InputBufferLength,
_In_ ULONG IoControlCode
)
/*++
Routine Description:
EvtIoDeviceControl handler for the default Queue
Arguments:
Queue - Handle to the framework queue object that is associated with the
I/O request.
Request - Handle to a framework request object.
OutputBufferLength - Size of the output buffer in bytes
InputBufferLength - Size of the input buffer in bytes
IoControlCode - I/O control code.
--*/
{
WDFDEVICE WdfDevice;
PCONTROLLER_CONTEXT ControllerContext;
BOOLEAN HandledbyUfx;
TraceEntry();
TraceVerbose("Queue 0x%p, Request 0x%p, OutputBufferLength %d, "
"InputBufferLength %d, IoControlCode %d",
Queue, Request, (int) OutputBufferLength,
(int) InputBufferLength, IoControlCode);
WdfDevice = WdfIoQueueGetDevice(Queue);
ControllerContext = DeviceGetControllerContext(WdfDevice);
HandledbyUfx = UfxDeviceIoControl(
ControllerContext->UfxDevice,
Request,
OutputBufferLength,
InputBufferLength,
IoControlCode);
if (!HandledbyUfx) {
TraceError("Received an unsupported IOCTL");
WdfRequestComplete(Request, STATUS_INVALID_DEVICE_REQUEST);
}
TraceExit();
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 |
Plateforme cible | Windows |
En-tête | ufxclient.h |
Bibliothèque | ufxstub.lib |
IRQL | DISPATCH_LEVEL |
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour