Указатели на структуру - C#

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

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

Для извлечения пути к файлу из ярлыка я использую WinApi GetPath(), аргументом которой является указатель на структуру WIN32_FIND_DATA. вот код объявления данной структуры:
[StructLayout( LayoutKind.Sequential, CharSet = CharSet.Auto )]
struct WIN32_FIND_DATA
{
    public uint dwFileAttributes;
    public UInt32 ftCreationTime;
    public UInt32 ftLastAccessTime;
    public UInt32 ftLastWriteTime;
    public uint nFileSizeHigh;
    public uint nFileSizeLow;
    public uint dwReserved0;
    public uint dwReserved1;
    [MarshalAs( UnmanagedType.ByValTStr, SizeConst = 260 )]
    public string cFileName;
    [MarshalAs( UnmanagedType.ByValTStr, SizeConst = 14 )]
    public string cAlternateFileName;
}
далее мне необходимо создать переменную - указатель на структуру:
unsafe
{
    WIN32_FIND_DATA tmpInfo = new WIN32_FIND_DATA();
    tmpInfo.cAlternateFileName = "";
    tmpInfo.cFileName = "";
    tmpInfo.dwFileAttributes = 0;
    tmpInfo.dwReserved0 = 0;
    tmpInfo.dwReserved1 = 0;
    tmpInfo.ftCreationTime = 0;
    tmpInfo.ftLastAccessTime = 0;
    tmpInfo.ftLastWriteTime = 0;
    tmpInfo.nFileSizeHigh = 0;
    tmpInfo.nFileSizeLow = 0;
    WIN32_FIND_DATA* tmpInfoPtr;
    tmpInfoPtr = &tmpInfo;
}
при компиляции выдаёт следующий ошибки: строка "WIN32_FIND_DATA* tmpInfoPtr;" - error CS0208: Cannot take the address of, get the size of, or declare a pointer to a managed type строка "struct WIN32_FIND_DATA" - (Related location) строка "tmpInfoPtr = &tmpInfo;" - error CS0208: Cannot take the address of, get the size of, or declare a pointer to a managed type что я делаю неправильно?

Решение задачи: «Указатели на структуру»

textual
Листинг программы
Shell32.Shell shell = new Shell32.Shell();

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


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

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

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