IoCreateSymbolicLink successed, but createfile failed?

I’m writing an USB filter driver, and I want access my filter alone. So I write the following code
#define NTDEVICE_NAME_STRING L"\Device\ABCD"
#define SYMBOLIC_NAME_STRING L"\DosDevices\EFGH"
RtlInitUnicodeString(&ntDeviceName, NTDEVICE_NAME_STRING);
RtlInitUnicodeString(&symbolicLinkName, SYMBOLIC_NAME_STRING);
status = IoCreateDevice( driverObj,
sizeof(DEVICE_EXTENSION),
&ntDeviceName, // name for this device
FILE_DEVICE_UNKNOWN,
FILE_AUTOGENERATED_DEVICE_NAME, // device characteristics
FALSE, // not exclusive
&filterDevObj); // our device object
status = IoCreateSymbolicLink(&symbolicLinkName, &ntDeviceName);

filterDevObj->Flags &= ~DO_DEVICE_INITIALIZING;

All code get STATUS_SUCCESS, and I can see a device named EFGH under Global?? in winobj. But when I want to open it , alway get failed with ERROR_FILE_NOT_FOUND
m_hDevHandle = ::CreateFile(TEXT(“\\.\EFGH”), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_WRITE_THROUGH, NULL);
What can I do for this?
Thanks

you use FILE_AUTOGENERATED_DEVICE_NAME - as result this overwrite your direct name - &ntDeviceName. “\Device\ABCD” simply not exist. also no big sense at all create SymbolicLink - device always can be direct open without it, for example as ::CreateFile(TEXT(“\\.\globalroot\Device\ABCD”), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_WRITE_THROUGH, NULL);

That’s the point.
Thank you.