Función WdfDeviceCreateSymbolicLink (wdfdevice.h)
[Se aplica a KMDF y UMDF]
El método WdfDeviceCreateSymbolicLink crea un vínculo simbólico a un dispositivo especificado.
Sintaxis
NTSTATUS WdfDeviceCreateSymbolicLink(
[in] WDFDEVICE Device,
[in] PCUNICODE_STRING SymbolicLinkName
);
Parámetros
[in] Device
Identificador de un objeto de dispositivo de marco.
[in] SymbolicLinkName
Puntero a una estructura UNICODE_STRING que contiene un nombre visible para el usuario para el dispositivo.
Valor devuelto
Si la operación se realiza correctamente, WdfDeviceCreateSymbolicLink devuelve STATUS_SUCCCESS. Entre los valores devueltos adicionales se incluyen:
Código devuelto | Descripción |
---|---|
|
El sistema no puede asignar espacio para almacenar el nombre del dispositivo. |
El método podría devolver otros valores NTSTATUS.
Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.
Comentarios
Si un controlador crea un vínculo simbólico para un dispositivo, las aplicaciones pueden usar el nombre del vínculo simbólico para acceder al dispositivo. Normalmente, en lugar de proporcionar vínculos simbólicos, los controladores basados en marcos proporcionan interfaces de dispositivo que las aplicaciones pueden usar para acceder a sus dispositivos.
Si el dispositivo se quita inesperadamente (se quita sorpresa), el marco quita el vínculo simbólico al dispositivo. A continuación, el controlador puede usar el nombre del vínculo simbólico para una nueva instancia del dispositivo.
Ejemplos
En el ejemplo de código siguiente de un controlador KMDF se crea un nombre de dispositivo MS-DOS que una aplicación puede usar para acceder a un dispositivo.
#define DOS_DEVICE_NAME L"\\DosDevices\\MyDevice"
DECLARE_CONST_UNICODE_STRING(dosDeviceName, DOS_DEVICE_NAME);
NTSTATUS status;
status = WdfDeviceCreateSymbolicLink(
controlDevice,
&dosDeviceName
);
if (!NT_SUCCESS(status)) {
goto Error;
}
Un controlador UMDF debe proporcionar un nombre de vínculo simbólico en el espacio de nombres global DosDevices , como se muestra en el ejemplo de código siguiente.
#define DOS_DEVICE_NAME L"\\DosDevices\\Global\\MyDevice"
DECLARE_CONST_UNICODE_STRING(dosDeviceName, DOS_DEVICE_NAME);
NTSTATUS status;
status = WdfDeviceCreateSymbolicLink(
controlDevice,
&dosDeviceName
);
if (!NT_SUCCESS(status)) {
goto Error;
}
Para obtener información sobre los espacios de nombres globales y locales \DosDevices , vea Nombres de dispositivos MS-DOS locales y globales.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Versión mínima de UMDF | 2.0 |
Encabezado | wdfdevice.h (incluya Wdf.h) |
Library | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
Reglas de cumplimiento de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |