Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês
Esta documentação foi arquivada e não está sendo atualizada.

Classe SafeFileHandle

Representa uma classe wrapper para um identificador de arquivo.

Namespace:  Microsoft.Win32.SafeHandles
Assembly:  mscorlib (em mscorlib.dll)

public sealed class SafeFileHandle : SafeHandleZeroOrMinusOneIsInvalid

O tipo SafeFileHandle expõe os membros a seguir.

  NomeDescrição
Método públicoSafeFileHandleInitializes a new instance of the SafeFileHandle class.
Início

  NomeDescrição
Propriedade públicaIsClosedObtém um valor indicando se o identificador é fechado. (Herdado de SafeHandle.)
Propriedade públicaIsInvalidObtém um valor que indica se o identificador é inválido. (Herdado de SafeHandleZeroOrMinusOneIsInvalid.)
Início

  NomeDescrição
Método públicoCloseMarca a alça de liberação e liberando recursos. (Herdado de SafeHandle.)
Método públicoDangerousAddRefManualmente, incrementa o contador de referência em SafeHandle instâncias. (Herdado de SafeHandle.)
Método públicoDangerousGetHandleRetorna o valor de handle campo. (Herdado de SafeHandle.)
Método públicoDangerousReleaseManualmente, diminui o contador de referência em um SafeHandle instância. (Herdado de SafeHandle.)
Método públicoDispose()Libera todos os recursos usados pela SafeHandle classe. (Herdado de SafeHandle.)
Método protegidoDispose(Boolean)Libera os recursos não gerenciados usados pela SafeHandle classe especificando se realizar um normal dispose operação. (Herdado de SafeHandle.)
Método públicoEquals(Object) Determina se o Object especificado é igual ao Object atual. (Herdado de Object.)
Método protegidoFinalizeLibera todos os recursos associados a alça. (Herdado de SafeHandle.)
Método públicoGetHashCodeServe como uma função hash para um tipo específico. (Herdado de Object.)
Método públicoGetType Obtém o Type da instância atual. (Herdado de Object.)
Método protegidoMemberwiseCloneCria uma cópia superficial do Object atual. (Herdado de Object.)
Método protegidoReleaseHandleQuando substituído em uma classe derivada, executa o código necessário para liberar o identificador. (Herdado de SafeHandle.)
Método protegidoSetHandleDefine o identificador para o identificador especificado preexistente. (Herdado de SafeHandle.)
Método públicoSetHandleAsInvalidMarca uma alça como não é mais usada. (Herdado de SafeHandle.)
Método públicoToStringRetorna uma string que representa o objeto atual. (Herdado de Object.)
Início

  NomeDescrição
Campo protegidohandleEspecifica o identificador a ser disposto. (Herdado de SafeHandle.)
Início

Essa classe é derivada de SafeHandleZeroOrMinusOneIsInvalid. Um valor 0 ou -1 é um identificador de arquivo inválido.

O exemplo de código a seguir demonstra como abrir um arquivo usando o SafeFileHandle classe e o não gerenciado CreateFile função.


using System;
using Microsoft.Win32.SafeHandles;
using System.Runtime.InteropServices;
using System.ComponentModel;

class SafeHandlesExample
{

    static void Main()
    {
        try
        {

            UnmanagedFileLoader loader = new UnmanagedFileLoader("example.xml");


        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
        Console.ReadLine();


    }
}

class UnmanagedFileLoader 
{

    public const short FILE_ATTRIBUTE_NORMAL = 0x80;
    public const short INVALID_HANDLE_VALUE = -1;
    public const uint GENERIC_READ = 0x80000000;
    public const uint GENERIC_WRITE = 0x40000000;
    public const uint CREATE_NEW = 1;
    public const uint CREATE_ALWAYS = 2;
    public const uint OPEN_EXISTING = 3;

    // Use interop to call the CreateFile function.
    // For more information about CreateFile,
    // see the unmanaged MSDN reference library.
    [DllImport("kernel32.dll", SetLastError = true, CharSet=CharSet.Unicode)]
    static extern SafeFileHandle CreateFile(string lpFileName, uint dwDesiredAccess,
      uint dwShareMode, IntPtr lpSecurityAttributes, uint dwCreationDisposition,
      uint dwFlagsAndAttributes, IntPtr hTemplateFile);



    private SafeFileHandle handleValue = null;


    public UnmanagedFileLoader(string Path)
    {
        Load(Path);
    }


    public void Load(string Path)
    {
        if (Path == null || Path.Length == 0)
        {
            throw new ArgumentNullException("Path");
        }

        // Try to open the file.
        handleValue = CreateFile(Path, GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero);

        // If the handle is invalid,
        // get the last Win32 error 
        // and throw a Win32Exception.
        if (handleValue.IsInvalid)
        {
            Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error());
        }
    }

    public SafeFileHandle Handle
    {
        get
        {
            // If the handle is valid,
            // return it.
            if (!handleValue.IsInvalid)
            {
                return handleValue;
            }
            else
            {
                return null;
            }
        }

    }

}


.NET Framework

Com suporte em: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

  • SecurityCriticalAttribute 

    requer confiança total para o chamador imediato. Este membro não pode ser usado pelo código parcialmente confiável ou transparente.

Windows 7, Windows Vista SP1 ou posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core não compatível), Windows Server 2008 R2 (Server Core não compatível com SP1 ou posterior), Windows Server 2003 SP2

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos de sistema do .NET Framework.

Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.
Mostrar: