mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 18:15:11 +00:00
Implemented missing mailslot functions
svn path=/trunk/; revision=1874
This commit is contained in:
parent
4be50fdc7e
commit
973bed37c6
2 changed files with 67 additions and 5 deletions
|
@ -1220,6 +1220,18 @@ typedef struct _FILE_MODE_INFORMATION {
|
||||||
ULONG Mode;
|
ULONG Mode;
|
||||||
} FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
|
} FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
|
||||||
|
ULONG MaxMessageSize;
|
||||||
|
ULONG Unknown; /* ?? */
|
||||||
|
ULONG NextSize;
|
||||||
|
ULONG MessageCount;
|
||||||
|
LARGE_INTEGER Timeout;
|
||||||
|
} FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
|
||||||
|
|
||||||
|
typedef struct _FILE_MAILSLOT_SET_INFORMATION {
|
||||||
|
LARGE_INTEGER Timeout;
|
||||||
|
} FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
|
||||||
|
|
||||||
typedef struct _FILE_COMPRESSION_INFORMATION {
|
typedef struct _FILE_COMPRESSION_INFORMATION {
|
||||||
LARGE_INTEGER CompressedFileSize;
|
LARGE_INTEGER CompressedFileSize;
|
||||||
USHORT CompressionFormat;
|
USHORT CompressionFormat;
|
||||||
|
@ -1241,6 +1253,7 @@ typedef struct _FILE_ALL_INFORMATION {
|
||||||
FILE_NAME_INFORMATION NameInformation;
|
FILE_NAME_INFORMATION NameInformation;
|
||||||
} FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
|
} FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
|
||||||
|
|
||||||
|
|
||||||
// file system information structures
|
// file system information structures
|
||||||
|
|
||||||
typedef struct _FILE_FS_DEVICE_INFORMATION {
|
typedef struct _FILE_FS_DEVICE_INFORMATION {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: mailslot.c,v 1.2 2001/05/02 22:29:18 ekohl Exp $
|
/* $Id: mailslot.c,v 1.3 2001/05/03 06:10:29 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS system libraries
|
* PROJECT: ReactOS system libraries
|
||||||
|
@ -106,8 +106,40 @@ GetMailslotInfo(HANDLE hMailslot,
|
||||||
LPDWORD lpMessageCount,
|
LPDWORD lpMessageCount,
|
||||||
LPDWORD lpReadTimeout)
|
LPDWORD lpReadTimeout)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
FILE_MAILSLOT_QUERY_INFORMATION Buffer;
|
||||||
return FALSE;
|
IO_STATUS_BLOCK Iosb;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Status = NtQueryInformationFile(hMailslot,
|
||||||
|
&Iosb,
|
||||||
|
&Buffer,
|
||||||
|
sizeof(FILE_MAILSLOT_QUERY_INFORMATION),
|
||||||
|
FileMailslotQueryInformation);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
DPRINT("NtQueryInformationFile failed (Status %x)!\n", Status);
|
||||||
|
SetLastErrorByStatus (Status);
|
||||||
|
return(FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lpMaxMessageSize != NULL)
|
||||||
|
{
|
||||||
|
*lpMaxMessageSize = Buffer.MaxMessageSize;
|
||||||
|
}
|
||||||
|
if (lpNextSize != NULL)
|
||||||
|
{
|
||||||
|
*lpNextSize = Buffer.NextSize;
|
||||||
|
}
|
||||||
|
if (lpMessageCount != NULL)
|
||||||
|
{
|
||||||
|
*lpMessageCount = Buffer.MessageCount;
|
||||||
|
}
|
||||||
|
if (lpReadTimeout != NULL)
|
||||||
|
{
|
||||||
|
*lpReadTimeout = (DWORD)(Buffer.Timeout.QuadPart / 10000);
|
||||||
|
}
|
||||||
|
|
||||||
|
return(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -115,8 +147,25 @@ WINBOOL STDCALL
|
||||||
SetMailslotInfo(HANDLE hMailslot,
|
SetMailslotInfo(HANDLE hMailslot,
|
||||||
DWORD lReadTimeout)
|
DWORD lReadTimeout)
|
||||||
{
|
{
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
FILE_MAILSLOT_SET_INFORMATION Buffer;
|
||||||
return FALSE;
|
IO_STATUS_BLOCK Iosb;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Buffer.Timeout.QuadPart = lReadTimeout * 10000;
|
||||||
|
|
||||||
|
Status = NtSetInformationFile(hMailslot,
|
||||||
|
&Iosb,
|
||||||
|
&Buffer,
|
||||||
|
sizeof(FILE_MAILSLOT_SET_INFORMATION),
|
||||||
|
FileMailslotSetInformation);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
DPRINT("NtSetInformationFile failed (Status %x)!\n", Status);
|
||||||
|
SetLastErrorByStatus (Status);
|
||||||
|
return(FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
return(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
Loading…
Reference in a new issue