SafeFileHandle Clase
Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

SafeFileHandle (Clase)

 

Representa una clase contenedora para un controlador de archivo.

Espacio de nombres:   Microsoft.Win32.SafeHandles
Ensamblado:  mscorlib (en mscorlib.dll)


[SecurityCriticalAttribute]
public sealed class SafeFileHandle : SafeHandleZeroOrMinusOneIsInvalid

NombreDescripción
System_CAPS_pubmethodSafeFileHandle(IntPtr, Boolean)

Inicializa una nueva instancia de la clase SafeFileHandle.

NombreDescripción
System_CAPS_pubpropertyIsClosed

Obtiene un valor que indica si el identificador está cerrado.(Heredado de SafeHandle.)

System_CAPS_pubpropertyIsInvalid

Obtiene un valor que indica si el identificador no es válido.(Heredado de SafeHandleZeroOrMinusOneIsInvalid.)

NombreDescripción
System_CAPS_pubmethodClose()

Marca el identificador para soltar y liberar recursos.(Heredado de SafeHandle.)

System_CAPS_pubmethodDangerousAddRef(Boolean)

Incrementa manualmente el contador de referencia de las instancias SafeHandle.(Heredado de SafeHandle.)

System_CAPS_pubmethodDangerousGetHandle()

Devuelve el valor del campo handle.(Heredado de SafeHandle.)

System_CAPS_pubmethodDangerousRelease()

Disminuye manualmente el contador de referencia de la instancia SafeHandle.(Heredado de SafeHandle.)

System_CAPS_pubmethodDispose()

Libera todos los recursos que utiliza la clase SafeHandle.(Heredado de SafeHandle.)

System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object.)

System_CAPS_pubmethodGetHashCode()

Sirve como una función hash para un tipo en particular. (Heredado de Object.)

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual. (Heredado de Object.)

System_CAPS_pubmethodSetHandleAsInvalid()

Marca un identificador para indicar que ya no se utiliza.(Heredado de SafeHandle.)

System_CAPS_pubmethodToString()

Retorna una cadena que representa al objeto actual. (Heredado de Object.)

This class is derived from T:Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid. A value of 0 or -1 is an invalid file handle.

System_CAPS_importantImportante

This type implements the T:System.IDisposable interface. When you have finished using the type, you should dispose of it either directly or indirectly. To dispose of the type directly, call its M:System.IDisposable.Dispose method in a try/catch block. To dispose of it indirectly, use a language construct such as using (in C#) or Using (in Visual Basic). For more information, see the “Using an Object that Implements IDisposable” section in the T:System.IDisposable interface topic.

The following code example demonstrates how to open a file using the T:Microsoft.Win32.SafeHandles.SafeFileHandle class and the unmanaged CreateFile function.

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;
            }
        }

    }

}

SecurityCriticalAttribute

requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

Universal Windows Platform
Disponible desde 10
.NET Framework
Disponible desde 2.0

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Volver al principio
Mostrar:
© 2016 Microsoft