Compartir a través de


Función CreateMailslotA (winbase.h)

Crea un mailslot con el nombre especificado y devuelve un identificador que un servidor mailslot puede usar para realizar operaciones en el mailslot. El mailslot es local para el equipo que lo crea. Se produce un error si ya existe un mailslot con el nombre especificado.

Sintaxis

HANDLE CreateMailslotA(
  [in]           LPCSTR                lpName,
  [in]           DWORD                 nMaxMessageSize,
  [in]           DWORD                 lReadTimeout,
  [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes
);

Parámetros

[in] lpName

Nombre del mailslot. Este nombre debe tener el siguiente formato:

\\.\mailslot\[ruta de acceso]nombre

El campo de nombre debe ser único. El nombre puede incluir varios niveles de pseudo directorios separados por barras diagonales inversas. Por ejemplo, ambos \\.\mailslot\example_mailslot_name y \\.\mailslot\abc\def\ghi son nombres válidos.

[in] nMaxMessageSize

Tamaño máximo de un único mensaje que se puede escribir en el mailslot, en bytes. Para especificar que el mensaje puede ser de cualquier tamaño, establezca este valor en cero.

[in] lReadTimeout

La hora en que una operación de lectura puede esperar a que se escriba un mensaje en el mailslot antes de que se produzca un tiempo de espera, en milisegundos. Los valores siguientes tienen significados especiales.

Valor Significado
0
Devuelve inmediatamente si no hay ningún mensaje presente. (El sistema no trata un retorno inmediato como un error).
MAILSLOT_WAIT_FOREVER
((DWORD)-1)
Espera para siempre un mensaje.
 

Este valor de tiempo de espera se aplica a todas las operaciones de lectura posteriores y a todos los identificadores de mailslot heredados.

[in, optional] lpSecurityAttributes

Puntero a una estructura SECURITY_ATTRIBUTES. El bInheritHandle miembro de la estructura determina si los procesos secundarios pueden heredar el identificador devuelto. Si lpSecurityAttributes es NULL, no se puede heredar el identificador.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es un identificador del mailslot, para su uso en las operaciones de mailslot del servidor. El identificador devuelto por esta función es asincrónico o superpuesto.

Si se produce un error en la función, el valor devuelto es INVALID_HANDLE_VALUE. Para obtener información de error extendida, llame a GetLastError.

Observaciones

El mailslot existe hasta que se cumple una de las condiciones siguientes:

  • El último identificador (posiblemente heredado o duplicado) se cierra mediante la función CloseHandle.
  • El proceso que posee las últimas salidas del identificador (posiblemente heredado o duplicado).
El sistema usa el segundo método para destruir los gráficos de correo.

Para escribir un mensaje en un mailslot, un proceso usa la función CreateFile, especificando el nombre de mailslot mediante uno de los siguientes formatos.

Formato Uso
\\.\mailslot\nombre Recupera un identificador de cliente en un mailslot local.
\\nombredeEquipo\mailslot\nombre Recupera un identificador de cliente en un mailslot remoto.
\\nombre de dominio\mailslot\nombre Recupera un identificador de cliente para todos los mailslots con el nombre especificado en el dominio especificado.
\\*\mailslot\nombre Recupera un identificador de cliente para todos los mailslots con el nombre especificado en el dominio principal del sistema.
 

Si CreateFile especifica un dominio o usa el formato asterisco para especificar el dominio principal del sistema, la aplicación no puede escribir más de 424 bytes a la vez en el mailslot. Si la aplicación intenta hacerlo, se produce un error en la función writeFile y GetLastError devuelve ERROR_BAD_NETPATH.

Una aplicación debe especificar la marca FILE_SHARE_READ al usar createFile para recuperar un identificador de cliente en un mailslot.

Si se llama a CreateFile para acceder a un mailslot no existente, se establecerá el código de error de ERROR_FILE_NOT_FOUND.

Ejemplos

Para obtener un ejemplo, vea Creación de unmailslot.

Nota

El encabezado winbase.h define CreateMailslot como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de winbase.h (incluya Windows.h)
biblioteca de Kernel32.lib
DLL de Kernel32.dll

Consulte también

CloseHandle

CreateFile

GetMailslotInfo

funciones mailslot

Mailslots Overview

SECURITY_ATTRIBUTES

SetMailslotInfo

WriteFile