Распределенные вычисления: технология Microsoft RPC. Часть1. Фертиков В.В. - 24 стр.

UptoLike

Составители: 

24
status = RpcServerRegisterIf(
hello_ServerIfHandle,
NULL, // MgrTypeUuid
NULL); // MgrEpv; null по умолчанию
printf("RpcServerRegisterIf returned 0x%x\n", status);
if (status) exit(status);
printf("Calling RpcServerListen\n");
status = RpcServerListen(
cMinCalls,
cMaxCalls,
fDontWait);
printf("RpcServerListen returned: 0x%x\n", status);
if (status) exit(status);
if (fDontWait) {
printf("Calling RpcMgmtWaitServerListen\n");
status = RpcMgmtWaitServerListen(); // ожидание
printf("RpcMgmtWaitServerListen returned: 0x%x\n",
status);
if (status) exit(status);
}
}
/* распределение памяти */
void __RPC_FAR * __RPC_API midl_user_allocate(size_t len)
{ return(malloc(len));
}
void __RPC_API midl_user_free(void __RPC_FAR * ptr)
{ free(ptr);
}
Сборка серверного приложения
Сборка серверного приложения совершенно аналогична сборке приложе-
ния клиента.
MIDL компиляция
Подразумевается, что исходный файл серверного стаба был сгенерирован
вместе с файлом клиентского стаба и файлом заголовка. Компилятор MIDL
создает все эти три файла одновременно . В нашем примере нет необходимости
вызывать компилятор MIDL дважды. Командная строка компилятора MIDL вы -
глядит следующим образом :
# makefile, фрагмент
midl hello.idl
                              24
    status = RpcServerRegisterIf(
                   hello_ServerIfHandle,
                   NULL,   // MgrTypeUuid
                   NULL); // MgrEpv; null по умолчанию
    printf("RpcServerRegisterIf returned 0x%x\n", status);
    if (status) exit(status);

    printf("Calling RpcServerListen\n");
    status = RpcServerListen(
                   cMinCalls,
                   cMaxCalls,
                   fDontWait);
    printf("RpcServerListen returned: 0x%x\n", status);
    if (status) exit(status);

    if (fDontWait) {
         printf("Calling RpcMgmtWaitServerListen\n");
         status = RpcMgmtWaitServerListen(); // ожидание
         printf("RpcMgmtWaitServerListen returned: 0x%x\n",
                 status);
         if (status) exit(status);
    }
}

/* распределение памяти */
void __RPC_FAR * __RPC_API midl_user_allocate(size_t len)
{   return(malloc(len));
}

void __RPC_API midl_user_free(void __RPC_FAR * ptr)
{   free(ptr);
}


    Сборка серверного приложения
    Сборка серверного приложения совершенно аналогична сборке приложе-
ния клиента.

    MIDL компиляция
    Подразумевается, что исходный файл серверного стаба был сгенерирован
вместе с файлом клиентского стаба и файлом заголовка. Компилятор MIDL
создает все эти три файла одновременно. В нашем примере нет необходимости
вызывать компилятор MIDL дважды. Командная строка компилятора MIDL вы-
глядит следующим образом:

# makefile, фрагмент
midl hello.idl