Поделиться через


Атрибут disable_consistency_check

Направляет RPC, чтобы не применять проверку согласованности корреляции.

interface interface-name
{
  return-type function-name(
        [[attribute-list,] disable_consistency_check] param-type param-name
}

Для коррелированных параметров RPC будет применяться, что буфер, отличный от NULL, передается, когда переменная счетчика корреляции не имеет значения NULL.

Пример

HRESULT PassString( [in] DWORD Length, [in, unique, string, 
    size_is( Length )]LPWSTR MyString );

Если MyStringNULL, RPC отклонит вызов, если не задано значение 0. Обратите внимание, что RPC позволит длину 0, а MyString не имеет значения NULL, а RPC будет рассматривать MyString как выделение буфера длиной 0.

Замечания

Чтобы отключить эту проверку, IDL может содержать атрибут [disable_consistency_check] для параметра, typedef или типа указателя. Это приведет к тому, что RPC не будет применять согласованность между указателем буфера и переменной корреляции для буфера, на который указывает параметр или указатель.

Чтобы отключить проверку согласованности для всей компиляции MIDL (и отключить принудительное применение проверки во всех случаях), можно использовать параметр командной строки MIDL /backward_compat maybenull_sizeis. Для этого требуется, чтобы цель компиляции MIDL была по крайней мере "целевой NT60".