TdiBuildReceiveDatagram

VOID
TdiBuildReceiveDatagram (
IN PIRP Irp,
IN PDEVICE_OBJECT DeviceObject,
IN PFILE_OBJECT FileObject,
IN PVOID CompletionRoutine,
IN PVOID Context,
IN PMDL MdlAddress,
IN ULONG ReceiveLength,
IN PTDI_CONNECTION_INFORMATION ReceiveDatagramInformation,
OUT PTDI_CONNECTION_INFORMATION ReturnDatagramInformation,
ULONG InFlags
);

TdiBuildReceiveDatagram builds an IRP containing a TDI_RECEIVE_DATAGRAM request message. It sets up the request message in the minor function code member of the I/O stack location and sets IRP_MJ_INTERNAL_DEVICE_CONTROL as a major function code.

Parameters

Irp

Points to the I/O stack location for the kernel-mode client IRP. The current stack location must point to the location in which TdiBuildReceiveDatagram places the parameter list. IRP members related to the receive datagram request are:

IRP Component Meaning
IoStatus.Status Specifies the final status of the receive datagram request.
IoStatus.Information Contains the number of data bytes the internal driver receive datagram function writes for the client.
IrpSp->MajorFunction Specifies IRP_MJ_INTERNAL_DEVICE_CONTROL.
IrpSp->MinorFunction Specifies TDI_RECEIVE_DATAGRAM.
IrpSp->FileObject Points to an address file object.
MdlAddress Points to a chain of MDLs describing the receive buffer for the client.
IrpSp->Parameters Points to a TDI_REQUEST_KERNEL_RECEIVEDG structure.

DeviceObject

Points to the device object that describes the TDI driver.

FileObject

Points to an address file object.

CompletionRoutine

Points to the client completion function the I/O subsystem can call when I/O is complete. This parameter must be NULL if the I/O subsystem calls no completion function.

Context

Points to the context the client associates with its completion function.

MdlAddress

Points to the MDL chain describing the client receive buffer.

ReceiveLength

Specifies the maximum length, in bytes, of the receive buffer. If this parameter is NULL, the driver uses the full MDL chain.

ReceiveDatagramInformation

Points to a TDI_CONNECTION_INFORMATION structure that defines the valid remote node client address from which the local node client accepts a datagram.

ReturnDatagramInformation

Points to the caller–defined memory location to which the driver writes a TDI_CONNECTION_INFORMATION structure that defines the source address of the received datagram.

InFlags

Specifies receive flags.

See Also

TDI_CONNECTION_INFORMATION, TDI_RECEIVE_DATAGRAM, TDI_REQUEST_KERNEL_RECEIVEDG