Распаковка возможного нулевого значения в структуре в C# – поиск альтернативного решенияC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Распаковка возможного нулевого значения в структуре в C# – поиск альтернативного решения

Сообщение Anonymous »

Для следующего кода я получаю предупреждение Распаковка возможного нулевого значения. (CS8605) в VS Code с C# Dev Kit:
Изображение

Исходный код с предупреждением:

Код: Выделить всё

// Originally a struct
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
private struct POLICY_DNS_DOMAIN_INFO {
public LSA_UNICODE_STRING Name;
public LSA_UNICODE_STRING DnsDomainName;
public LSA_UNICODE_STRING DnsForestName;
public GUID DomainGuid;
public IntPtr pSID;
}

// Additional code removed for simplicity

resultQueryPolicy = LsaQueryInformationPolicy(
policyHandle,
POLICY_INFORMATION_CLASS.PolicyDnsDomainInformation,
out IntPtr infoStructure
);

winErrorCode = LsaNtStatusToWinError(resultQueryPolicy);

if (winErrorCode == 0) {

POLICY_DNS_DOMAIN_INFO domain = (POLICY_DNS_DOMAIN_INFO)Marshal.PtrToStructure(infoStructure, typeof(POLICY_DNS_DOMAIN_INFO));

// Additional code removed for simplicity
}
Текущее рабочее решение:

Код: Выделить всё

// I changed the struct to a class
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
private class POLICY_DNS_DOMAIN_INFO {
public LSA_UNICODE_STRING Name;
public LSA_UNICODE_STRING DnsDomainName;
public LSA_UNICODE_STRING DnsForestName;
public GUID DomainGuid;
public IntPtr pSID;
}

// Additional code removed for simplicity

resultQueryPolicy = LsaQueryInformationPolicy(
policyHandle,
POLICY_INFORMATION_CLASS.PolicyDnsDomainInformation,
out IntPtr infoStructure
);

winErrorCode = LsaNtStatusToWinError(resultQueryPolicy);

if (winErrorCode == 0) {

// I applied T?
POLICY_DNS_DOMAIN_INFO? domain = (POLICY_DNS_DOMAIN_INFO?)Marshal.PtrToStructure(infoStructure, typeof(POLICY_DNS_DOMAIN_INFO));

// Additional code removed for simplicity
}
Я ищу альтернативное решение (надеюсь, простое) без необходимости преобразования структуры в класс. Возможно ли это?


Подробнее здесь: https://stackoverflow.com/questions/785 ... rnative-so
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»