// spb.h
typedef struct SPB_TRANSFER_BUFFER {
SPB_TRANSFER_BUFFER_FORMAT Format;
union {
SPB_TRANSFER_BUFFER_LIST_ENTRY Simple;
struct {
PSPB_TRANSFER_BUFFER_LIST_ENTRY List;
ULONG ListCe;
} BufferList;
PMDL Mdl;
};
} SPB_TRANSFER_BUFFER, *PSPB_TRANSFER_BUFFER;
View the official Windows Driver Kit DDI referenceNo description available.
The SPB_TRANSFER_BUFFER structure describes the data buffer for an individual transfer in an I/O transfer sequence.
FormatThe buffer format. This member is set to one of the following SPB_TRANSFER_BUFFER_FORMAT enumeration values:
SpbTransferBufferFormatMdl is a valid value only for I/O transfer sequences that are requested by clients of the SPB controller driver that are kernel-mode components.
SimpleA SPB_TRANSFER_BUFFER_LIST_ENTRY structure that specifies the base address and the length of a simple transfer buffer. Use this member of the union if Format is SpbTransferBufferFormatSimple or SpbTransferBufferFormatSimpleNonPaged. The SpbTransferBufferFormatSimpleNonPaged format is used only by kernel-mode clients.
BufferListA scatter-gather list that consists of an array of buffer descriptors. Use this member of the union if Format is SpbTransferBufferFormatList.
BufferList.ListA pointer to an array of SPB_TRANSFER_BUFFER_LIST_ENTRY structures that describe the buffers in the scatter-gather list.
BufferList.ListCeThe number of elements in the List array.
MdlA pointer to an MDL that describes the buffer. This member is used only by kernel-mode clients. Use this member of the union if Format is SpbTransferBufferFormatMdl. For more information, see Remarks.
This structure is used by an SPB_TRANSFER_LIST_ENTRY structure to describe a transfer buffer.
The Mdl member of this structure can be used only by clients of the SPB controller driver that are kernel-mode components. User-mode clients must not use this member. For more information about MDLs, see Using MDLs.