How to use IoRegisterDeviceInterface?

Hello!every friends,
I have a problem facing in w2k driver development.
I create a un-named device object for my filter dirver in DriverEntry
routine. Then i call
IoRegisterDeviceInterface(
IN PDEVICE_OBJECT PhysicalDeviceObject,
IN CONST GUID *InterfaceClassGuid,
IN PUNICODE_STRING ReferenceString OPTIONAL,
OUT PUNICODE_STRING SymbolicLinkName
);

for getting a symbolic link. But the routine return
STATUS_INVALID_DEVICE_REQUEST. In DDK document, Description is “Possibly
indicates that the PhysicalDeviceObject is not a valid PDO pointer.”
I create the device object using IoCreateDevice() (device name is NULL)

Why the device object is not a valide PDO pointer? or other reason?
If i can not call the routine, How to get symbollink for my filter driver?

( I try to name a device name for my filter driver and create a symbol link
name. When the device receive irp from application, system is stopped. But
it is normal in NT4. )
Thanks in advance for any sugguestion!
xiong

>Why the device object is not a valide PDO pointer?

Because this is FDO/FiDO pointer.
IoRegisterDeviceInterface requires you to use not DO created by
you, but DO passed by PnP to the AddDevice routine.

Max

But i want to create a symbolic link for my dirver’s common device name
which is created by myself. How to do?
( I try to name a device name for my filter driver and create a symbol link
name. When the device(my driver’s common device) receive irp from
application, system is stopped. But it is normal in NT4. )
Thanks for your help!

>Why the device object is not a valide PDO pointer?

Because this is FDO/FiDO pointer.
IoRegisterDeviceInterface requires you to use not DO created by
you, but DO passed by PnP to the AddDevice routine.

Max


You are currently subscribed to ntdev as: xxxxx@psh.com.cn
To unsubscribe send a blank email to $subst(‘Email.Unsub’)

> ( I try to name a device name for my filter driver and create a

No. On WDM, you must either register a device interface for the
device stack or create a separate device object independent of the
PnP stack & name it.

Max