private SNILoadHandle() : base(IntPtr.Zero, true) { // From security review - SafeHandle guarantees this is only called once. // The reason for the safehandle is guaranteed initialization and termination of SNI to // ensure SNI terminates and cleans up properly. try { } finally { _sniStatus = SNINativeMethodWrapper.SNIInitialize(); uint value = 0; // VSDevDiv 479597: If initialize fails, don't call QueryInfo. if (TdsEnums.SNI_SUCCESS == _sniStatus) { // Query OS to find out whether encryption is supported. SNINativeMethodWrapper.SNIQueryInfo(SNINativeMethodWrapper.QTypes.SNI_QUERY_CLIENT_ENCRYPT_POSSIBLE, ref value); } _encryptionOption = (value == 0) ? EncryptionOptions.NOT_SUP : EncryptionOptions.OFF; base.handle = (IntPtr)1; // Initialize to non-zero dummy variable. } }
private SNILoadHandle() : base(IntPtr.Zero, true) { // From security review - SafeHandle guarantees this is only called once. // The reason for the safehandle is guaranteed initialization and termination of SNI to // ensure SNI terminates and cleans up properly. try { } finally { _sniStatus = SNINativeMethodWrapper.SNIInitialize(); base.handle = (IntPtr)1; // Initialize to non-zero dummy variable. } }