Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2011, 14:42   #1
tamTam
Новичок
Джуниор
 
Регистрация: 29.11.2011
Сообщений: 1
По умолчанию GetMailslotInfo завершается с ошибкой.

Всем доброго времени суток. Вот пытаюсь работать с почтовыми ящиками в C# используя winapi. Ящик создал и попробовал получить информацию о нем с помощью GetMailslotInfo, но она завершается с ошибкой 6. Вот собственно, сам код, создание ящика и GetMailslotInfo, соответственно.


Код:
using System;
using System.Runtime.InteropServices;

namespace createms
{
    class Program
    {
        //Создание почтового ящика процессом-сервером.
        [DllImport("kernel32.dll",SetLastError=true)]
        static extern IntPtr CreateMailslot(
            string lpName,         //имя почтового ящика.
            uint nMaxMessageSize,  //максимальная длина сообщения.
            uint lReadTimeout,     //интервал ожидания.
            IntPtr lpSecurityAttributes);  //атрибуты безопасности.


        static void Main()
        {
            //Создаю почтовый ящик.
            IntPtr d;
            d=CreateMailslot (
                "\\\\.\\mailslot\\mymail", //имя почтового ящика.
                0,                       //длина сообщения произвольна.
                500000,
                IntPtr.Zero
                );
            Console.WriteLine(d);
            if (Marshal.GetLastWin32Error() != 0)
            {
                Console.WriteLine("Почтовый ящик не создан" + Marshal.GetLastWin32Error());
            }
            else
            {
                Console.WriteLine("Почтовый ящик создан");
            }
            Console.ReadKey();
        }
    }
}
и

Код:
using System;
using System.Runtime.InteropServices;

namespace GetInfo
{
    class Program
    {
        [DllImport("KERNEL32.DLL",SetLastError=true)]
        static extern bool GetMailslotInfo(
               IntPtr hMailslot,      // дескриптор почтового ящика
               int lpMaxMessageSize,  // максимальная длина сообщения
               ref int lpNextSize,    // длина следующего сообщения
               IntPtr lpMessageCount, // количество сообщений
               IntPtr lpReadTimeout   // интервал ожидания сообщения
            );
        static void Main()
        {
            IntPtr hMailslot;
            int x;
            x = int.Parse(Console.ReadLine()); //тут я ввожу дескриптор,                   который выдает предыдущий код.
            hMailslot = (IntPtr)x;
            int lpMaxMessageSize;
            int lpNextSize;
            IntPtr lpMessageCount;
            IntPtr lpReadTimeout;

            lpMaxMessageSize = 0;
            lpNextSize = 0;
            lpMessageCount = (IntPtr)0;
            lpReadTimeout = (IntPtr)0;

            GetMailslotInfo(
                hMailslot,
                lpMaxMessageSize,
                ref lpNextSize,
                lpMessageCount,
                lpReadTimeout
                );
            if (Marshal.GetLastWin32Error()!=0)
            {
                Console.WriteLine("Ошибка " + Marshal.GetLastWin32Error());
            }
            else 
            {
                Console.WriteLine("Информация полученна");
            }
            Console.ReadKey();
        }
    }
}
Если кому не сложно, объясните пожалуйста, что нужно исправить. Спасибо.
tamTam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задча с ошибкой X-REY Паскаль, Turbo Pascal, PascalABC.NET 2 11.12.2011 13:37
Программа стартует и сразу же завершается IceExecutioner Общие вопросы Delphi 1 03.03.2011 13:18
Синий кружок должен двигаться треугольной траектории, программа завершается нажатием любой клавиши. Pan_rust Паскаль, Turbo Pascal, PascalABC.NET 3 24.05.2010 23:02
Помогите с ошибкой Wildangel0990 Помощь студентам 6 02.07.2009 10:10
c++. Работа с ошибкой SVG Помощь студентам 2 27.05.2009 23:44