forked from Mirrors/wine-wine
ntdll: Implement FSCTL_GET_OBJECT_ID to retrieve a file id.
It can be used instead of FileIdInformation to avoid depending on mountmgr. Signed-off-by: Alexandre Julliard <julliard@winehq.org>master
parent
6ff0bb786c
commit
251335cdf3
|
@ -5666,6 +5666,29 @@ NTSTATUS WINAPI NtFsControlFile( HANDLE handle, HANDLE event, PIO_APC_ROUTINE ap
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case FSCTL_GET_OBJECT_ID:
|
||||||
|
{
|
||||||
|
FILE_OBJECTID_BUFFER *info = out_buffer;
|
||||||
|
int fd, needs_close;
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
|
io->Information = 0;
|
||||||
|
if (out_size >= sizeof(*info))
|
||||||
|
{
|
||||||
|
status = server_get_unix_fd( handle, 0, &fd, &needs_close, NULL, NULL );
|
||||||
|
if (status) break;
|
||||||
|
fstat( fd, &st );
|
||||||
|
if (needs_close) close( fd );
|
||||||
|
memset( info, 0, sizeof(*info) );
|
||||||
|
memcpy( info->ObjectId, &st.st_dev, sizeof(st.st_dev) );
|
||||||
|
memcpy( info->ObjectId + 8, &st.st_ino, sizeof(st.st_ino) );
|
||||||
|
io->Information = sizeof(*info);
|
||||||
|
}
|
||||||
|
else status = STATUS_BUFFER_TOO_SMALL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case FSCTL_SET_SPARSE:
|
case FSCTL_SET_SPARSE:
|
||||||
TRACE("FSCTL_SET_SPARSE: Ignoring request\n");
|
TRACE("FSCTL_SET_SPARSE: Ignoring request\n");
|
||||||
io->Information = 0;
|
io->Information = 0;
|
||||||
|
|
|
@ -744,6 +744,21 @@ typedef struct _FILE_PIPE_LOCAL_INFORMATION {
|
||||||
#define FILE_PIPE_CONNECTED_STATE 0x00000003
|
#define FILE_PIPE_CONNECTED_STATE 0x00000003
|
||||||
#define FILE_PIPE_CLOSING_STATE 0x00000004
|
#define FILE_PIPE_CLOSING_STATE 0x00000004
|
||||||
|
|
||||||
|
typedef struct _FILE_OBJECTID_BUFFER
|
||||||
|
{
|
||||||
|
BYTE ObjectId[16];
|
||||||
|
union
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
BYTE BirthVolumeId[16];
|
||||||
|
BYTE BirthObjectId[16];
|
||||||
|
BYTE DomainId[16];
|
||||||
|
} DUMMYSTRUCTNAME;
|
||||||
|
BYTE ExtendedInfo[48];
|
||||||
|
} DUMMYUNIONNAME;
|
||||||
|
} FILE_OBJECTID_BUFFER, *PFILE_OBJECTID_BUFFER;
|
||||||
|
|
||||||
typedef struct _FILE_OBJECTID_INFORMATION {
|
typedef struct _FILE_OBJECTID_INFORMATION {
|
||||||
LONGLONG FileReference;
|
LONGLONG FileReference;
|
||||||
UCHAR ObjectId[16];
|
UCHAR ObjectId[16];
|
||||||
|
|
Loading…
Reference in New Issue