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.
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).
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
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 |