Программирование для Windows NT (том 2)



         

Приложение MSLOTS


Исходный текст серверного приложения MSLOTS представлен в листинге2.13.

Листинг 2.13. Файл mailslot/mslots/mslots.c

// ==================================================

// Приложение MSLOTS (серверное приложение)

// Демонстрация использования каналов Mailslot

// для передачи данных между процессами

//

// (С) Фролов А.В., 1996

// Email: frolov@glas.apc.org

// ==================================================

#include <windows.h>

#include <stdio.h>

#include <conio.h>

int main()

{

  // Код возврата из функций

  BOOL   fReturnCode;

  // Размер сообщения в байтах

  DWORD  cbMessages;

  // Количество сообщений в канале Mailslot

  DWORD  cbMsgNumber;

  // Идентификатор канала Mailslot

  HANDLE hMailslot;

  // Имя создаваемого канала Mailslot

  LPSTR  lpszMailslotName = "\\\\.\\mailslot\\$Channel$";

  // Буфер для передачи данных через канал

  char   szBuf[512];

  // Количество байт данных, принятых через канал

  DWORD  cbRead;

  printf("Mailslot server demo\n"

    "(C) A. Frolov, 1996, Email: frolov@glas.apc.org\n");

  // Создаем канал Mailslot, имеющий имя lpszMailslotName

  hMailslot = CreateMailslot(

    lpszMailslotName, 0,

    MAILSLOT_WAIT_FOREVER, NULL);

   

  // Если возникла ошибка, выводим ее код и зваершаем

  // работу приложения

  if(hMailslot == INVALID_HANDLE_VALUE)

  {

    fprintf(stdout,"CreateMailslot: Error %ld\n",

      GetLastError());

    getch();

    return 0;

  }

  // Выводим сообщение о создании канала

  fprintf(stdout,"Mailslot created\n");

  // Цикл получения команд через канал

  while(1)

  {

    // Определяем состояние канала Mailslot

    fReturnCode = GetMailslotInfo(

      hMailslot, NULL, &cbMessages,

      &cbMsgNumber, NULL);

    if(!fReturnCode)

    {

      fprintf(stdout,"GetMailslotInfo: Error %ld\n",




Содержание  Назад  Вперед