Какие значения у параметров функции Win32 API??? (на примере CreateFile) - C#

Узнай цену своей работы

Формулировка задачи:

Подскажите, пожалуйста, какие значения параметров мне нужно передавать при вызове функции API на примере CreateFile. Во всех хэлпах или примитивное MessageBox или странные параметры GENERIC_READ, FILE_SHARE_READ и т.д. Не могу разобраться с какими значениями этих параметров мне вызывать функцию???Где их взять, это константы или нет? С меня большое СПАСИБО.
    struct SECURITY_ATTRIBUTES
    {
        internal long nLength;
        internal Int16 lpSecurityDescriptor;
        internal bool bInheritHandle;
    }
    [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    public static extern IntPtr CreateFile(
       String lpFileName,
       Int32 dwDesiredAccess,
       Int32 dwShareMode,
       SECURITY_ATTRIBUTES lpSecurityAttributes,
       Int32 dwCreationDisposition,
       Int32 dwFlagsAndAttributes,
       IntPtr hTemplateFile);
 
...
 
      txt.Text += CreateFile("C:\\out.txt", long GENERIC_READ, long FILE_SHARE_READ, SECURITY_ATTRIBUTES atr, long OPEN_EXISTING, long FILE_ATTRIBUTE_NORMAL, ref GENERIC_READ);

Решение задачи: «Какие значения у параметров функции Win32 API??? (на примере CreateFile)»

textual
Листинг программы
using System.IO;
using System.Runtime.InteropServices;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        [DllImport("Kernel32.dll")]
 
        static extern IntPtr CreateFile(
                        string filename,
                        [MarshalAs(UnmanagedType.U4)]FileAccess fileaccess,
                        [MarshalAs(UnmanagedType.U4)]FileShare fileshare,
                        int securityattributes,
                        [MarshalAs(UnmanagedType.U4)]FileMode creationdisposition,
                        int flags,
                        IntPtr template);
        private void button1_Click(object sender, EventArgs e)
        {
            IntPtr ptr = CreateFile("text.txt", FileAccess.ReadWrite,
                      FileShare.ReadWrite, 0, FileMode.Create, 0, IntPtr.Zero);
            MessageBox.Show("OK");
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы