Использование win32Com (не существует в текущем контексте)

Я пытаюсь использовать Win32 API для написания собственной небольшой библиотеки для подключения к последовательному порту. К сожалению, все примеры кода, которые я нашел, используют kernel32.dll (который Я могу это сделать), но команда createFile использует префикс win32Com, который, как я предполагаю, является частью некоторого пространства имен, которое мне нужно использовать. К сожалению, я не могу понять это, и, будучи новичком, я не знаю, как узнать, является ли это ссылкой, которую мне нужно включить, или чем-то еще.

Может ли кто-нибудь указать мне пример кода, который объясняет, как это сделать? Или подскажите, где я ошибаюсь? Я включу свой раздел «использования» и DllImport, а также место, где я пытаюсь создать файл ниже.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.IO.Ports;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;

Здесь есть еще код, инициализация формы и т.д.

[DllImport("kernel32.dll", SetLastError = true)]
        internal static extern IntPtr CreateFile(String lpFileName,
           UInt32 dwDesiredAccess, UInt32 dwShareMode,
           IntPtr lpSecurityAttributes, UInt32 dwCreationDisposition,
           UInt32 dwFlagsAndAttributes, IntPtr hTemplateFile);

Но когда я использую следующее, я получаю сообщение об ошибке: The name 'Win32Com' does not exist in the current context.

 hPort = Win32Com.CreateFile(cs.port,
               Win32Com.GENERIC_READ | Win32Com.GENERIC_WRITE, 0, IntPtr.Zero,
               Win32Com.OPEN_EXISTING, Win32Com.FILE_FLAG_OVERLAPPED,
               IntPtr.Zero);

Я уверен, что это простая ошибка, которую я совершаю, но, к сожалению, на данный момент у меня нет набора навыков, чтобы выяснить, где она находится.

Заранее спасибо!


person tmwoods    schedule 24.02.2013    source источник
comment
Просто из любопытства, почему вы не можете использовать System.IO.Ports.SerialPort? msdn.microsoft.com/en-us/library/   -  person Karl-Johan Sjögren    schedule 24.02.2013
comment
Это то, что я делал исторически, к сожалению, System.IO.Ports.SerialPort сделан довольно плохо; то есть он работает только с примерно 75% оборудования. Мой поток здесь и другой мой здесь объясните, почему. Очень расстраивает, но объясняет, почему я публикую этот вопрос :)   -  person tmwoods    schedule 25.02.2013


Ответы (1)


Ваша ссылка гласит: «Win32Com — это вспомогательный класс, используемый в качестве контейнера для статических определений функций, структур и констант API, которые я буду использовать через P/Invoke». поэтому вам нужно создать его и поместить туда следующее объявление CreateFile. Вам также следует прочитать о P/Invoke, чтобы понять, как это работает.

person wRAR    schedule 24.02.2013
comment
Хорошо, это хорошая отправная точка для меня. Это те вещи, которые я должен прочитать примерно шесть раз, прежде чем понять 50%, но такова природа изучения этих новых тем. Спасибо, отчитаюсь позже. - person tmwoods; 25.02.2013