P / Вызов структуры с указателем на член структуры - PullRequest
0 голосов
/ 27 декабря 2011

Если я перевожу сигнатуру встроенной функции в C #, который принимает указатель на структуру, я определяю ее как ref с переведенным struct в качестве типа.

Что является правильнымКстати, если этот указатель на структуру не является параметром функции, а другим членом структуры?

Действительно ли мне нужно делать все эти вещи Marshal.AllocHGlobal здесь?

Объект делаетдолжен быть доступен только из собственного кода во время вызова p / invoke.

[StructLayout(LayoutKind.Sequential)]
public struct WINTRUST_DATA
{
    public uint cbStruct;
    public IntPtr pPolicyCallbackData;
    public IntPtr pSIPClientData;
    public uint dwUIChoice;
    public uint fdwRevocationChecks;
    public uint dwUnionChoice;

    // Pointer to WINTRUST_FILE_INFO: 
    // public IntPtr pFile;
    // public WINTRUST_FILE_INFO pFile;
    // ?

    public uint dwStateAction;
    public IntPtr hWVTStateData;
    public IntPtr pwszURLReference;
    public uint dwProvFlags;
    public uint dwUIContext;
}

[StructLayout(LayoutKind.Sequential)]
public struct WINTRUST_FILE_INFO
{
    public uint cbStruct;
    [MarshalAs(UnmanagedType.LPWStr)] public string pcwszFilePath;
    public IntPtr hFile;
    public IntPtr pgKnownSubject;
}

[DllImport("wintrust.dll")]
public static extern int WinVerifyTrust(IntPtr hWnd, ref Guid pgActionID, ref WINTRUST_DATA pWVTData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...