WdfDeviceCreateSymbolicLink function (wdfdevice.h)
[Applies to KMDF and UMDF]
The WdfDeviceCreateSymbolicLink method creates a symbolic link to a specified device.
Syntax
NTSTATUS WdfDeviceCreateSymbolicLink(
[in] WDFDEVICE Device,
[in] PCUNICODE_STRING SymbolicLinkName
);
Parameters
[in] Device
A handle to a framework device object.
[in] SymbolicLinkName
A pointer to a UNICODE_STRING structure that contains a user-visible name for the device.
Return value
If the operation succeeds, the WdfDeviceCreateSymbolicLink returns STATUS_SUCCCESS. Additional return values include:
Return code | Description |
---|---|
|
The system cannot allocate space to store the device name. |
The method might return other NTSTATUS values.
A bug check occurs if the driver supplies an invalid object handle.
Remarks
If a driver creates a symbolic link for a device, applications can use the symbolic link name to access the device. Typically, instead of providing symbolic links, framework-based drivers provide device interfaces that applications can use to access their devices.
If the device is removed unexpectedly (surprise-removed), the framework removes the symbolic link to the device. The driver can then use the symbolic link name for a new instance of the device.
Examples
The following code example from a KMDF driver creates an MS-DOS device name that an application can use to access a device.
#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;
}
A UMDF driver must provide a symbolic link name in the global DosDevices namespace, as the following code example illustrates.
#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;
}
For information about global and local \DosDevices namespaces, see Local and Global MS-DOS Device Names.
Requirements
Requirement | Value |
---|---|
Target Platform | Universal |
Minimum KMDF version | 1.0 |
Minimum UMDF version | 2.0 |
Header | wdfdevice.h (include Wdf.h) |
Library | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
DDI compliance rules | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |