NTSTATUS
TdiDispatchDeviceControl (
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PIO_STACK IrpSp
);
TdiDispatchDeviceControl processes IRPs set with the major function code IRP_MJ_DEVICE_CONTROL.
Parameters
DeviceObject
Points to the device object created by the TDI driver.
Irp
Points to the IRP.
IrpSp
Points to the I/O stack location of the transport driver in the given IRP.
Return Value
TdiDispatchDeviceControl returns STATUS_SUCCESS if it satisfied the given request. Otherwise, it returns a driver-determined error status, depending on the given IOCTL_XXX minor function code in the IRP.
Comments
Usually, TdiDispatchDeviceControl calls TdiMapUserRequest and, if it returns STATUS_SUCCESS, calls the transport's TdiDispatchInternalDeviceControl function with the input DeviceObject and Irp pointers. If TdiMapUserRequest returns an error indicating that the given IOCTL_XXX in the Irp did not match any of the system-defined IOCTL_TDI_XXX codes, most transports simply complete the IRP with a driver-determined error status, such as STATUS_INVALID_DEVICE_REQUEST or STATUS_NOT_SUPPORTED.
However, if a transport supports any driver-defined "private" IOCTLs that a transport-dedicated application uses to communicate with the transport, its TdiDispatchDeviceControl switches on these IOCTL_XXX and calls internal driver functions to process them, as well as calling TdiDispatchInternalDeviceControl when TdiMapUserRequest returns STATUS_SUCCESS.
For more information about driver-defined IOCTL codes, see the Kernel-Mode Driver Reference.
See Also
TdiDispatchFastDeviceControl, TdiDispatchInternalDeviceControl, TdiMapUserRequest