You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.1 KiB
78 lines
2.1 KiB
// setext.c
|
|
|
|
#include "oidtst.h"
|
|
|
|
|
|
int
|
|
FsTestSetExtendedInfo(
|
|
IN HANDLE hFile,
|
|
IN PUCHAR ExtInfoBuffer
|
|
)
|
|
{
|
|
|
|
IO_STATUS_BLOCK IoStatusBlock;
|
|
NTSTATUS Status;
|
|
|
|
Status = NtFsControlFile( hFile, // file handle
|
|
NULL, // event
|
|
NULL, // apc routine
|
|
NULL, // apc context
|
|
&IoStatusBlock, // iosb
|
|
FSCTL_SET_OBJECT_ID_EXTENDED, // FsControlCode
|
|
ExtInfoBuffer, // input buffer
|
|
48, // input buffer length
|
|
NULL, // OutputBuffer for data from the FS
|
|
0 ); // OutputBuffer Length
|
|
|
|
return FsTestDecipherStatus( Status );
|
|
}
|
|
|
|
|
|
VOID
|
|
_cdecl
|
|
main(
|
|
int argc,
|
|
char *argv[]
|
|
)
|
|
{
|
|
HANDLE hFile;
|
|
UCHAR ExtInfoBuffer[48];
|
|
int retval = 0;
|
|
|
|
//
|
|
// Get parameters
|
|
//
|
|
|
|
if (argc < 3) {
|
|
printf("This program sets the object id extended info for a file (ntfs only).\n\n");
|
|
printf("usage: %s filename ExtendedInfo\n", argv[0]);
|
|
return;
|
|
}
|
|
|
|
hFile = CreateFile( argv[1],
|
|
GENERIC_READ | GENERIC_WRITE,
|
|
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
|
NULL,
|
|
OPEN_EXISTING,
|
|
0,
|
|
NULL );
|
|
|
|
if ( hFile == INVALID_HANDLE_VALUE ) {
|
|
printf( "Error opening file %s %x\n", argv[1], GetLastError() );
|
|
return;
|
|
}
|
|
|
|
RtlZeroBytes( ExtInfoBuffer, sizeof( ExtInfoBuffer ) );
|
|
|
|
sscanf( argv[2], "%s", &ExtInfoBuffer );
|
|
|
|
printf( "\nUsing file:%s, ExtendedInfo:%s",
|
|
argv[1],
|
|
ExtInfoBuffer );
|
|
|
|
FsTestSetExtendedInfo( hFile, ExtInfoBuffer );
|
|
|
|
CloseHandle( hFile );
|
|
|
|
return;
|
|
}
|