type_from_xmit函数
存根调用 type_from_xmit 函数,将数据从其传输的类型转换为呈现给应用程序的类型。 函数定义为:
void __RPC_USER <type>_from_xmit (
<xmit_type> __RPC_FAR *,
<type> __RPC_FAR *);
第一个参数是指向传输数据的指针。 函数将第二个参数设置为指向呈现的数据。
type_from_xmit 函数必须管理所呈现类型的内存。 函数必须为从第二个参数指示的地址开始的整个数据结构分配内存,但参数本身除外, (存根为根节点分配内存并将其传递给函数) 。 第二个参数的值在调用期间无法更改。 函数可以更改该地址上的内容。
在此示例中,函数DOUBLE_LINK_TYPE_from_xmit将大小数组转换为双链接列表。 函数保留指向列表开头的有效指针,释放与列表其余部分关联的内存,然后创建从同一指针开始的新列表。 该函数使用实用工具函数 InsertNewNode 将列表节点追加到列表的末尾,并将 pNext 和 pPrevious 指针分配给相应的值。
void __RPC_USER DOUBLE_LINK_TYPE_from_xmit(
DOUBLE_XMIT_TYPE __RPC_FAR * pArray,
DOUBLE_LINK_TYPE __RPC_FAR * pList)
{
DOUBLE_LINK_TYPE *pCurrent;
int i;
if (pArray->sSize <= 0)
{
// error checking
return;
}
if (pList == NULL) // if invalid, create the list head
pList = InsertNewNode(pArray->asNumber[0], NULL);
else
{
DOUBLE_LINK_TYPE_free_inst(pList); // free all other nodes
pList->sNumber = pArray->asNumber[0];
pList->pNext = NULL;
}
pCurrent = pList;
for (i = 1; i < pArray->sSize; i++)
pCurrent = InsertNewNode(pArray->asNumber[i], pCurrent);
return;
}