Re: STATUS_ILLEGAL_INSTRUCTION returned by ZwQueryDirectoryFile()
- From: "Pavel A." <pavel_a@xxxxxxxxxxxxxxx>
- Date: Tue, 5 Aug 2008 01:53:31 +0300
Use GetFileInformationByHandle.
--PA
"Ernie Billing" <ErnieBilling@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message news:0305F5BA-4DC7-4B8E-A25D-73937440665D@xxxxxxxxxxxxxxxx
I'm calling ZwQueryDirectoryFile() from user mode code to get file ID and
change time during a directory scan, and its returning
STATUS_ILLEGAL_INSTRUCTION. Anyone see what I'm doing wrong?
NT::IO_STATUS_BLOCK iosb;
memset( &iosb, 0, sizeof( iosb ) );
NT::UNICODE_STRING name = { strPath.length()*sizeof( wchar_t ),
strPath.length()*sizeof( wchar_t ), const_cast< wchar_t * >( strPath.native()
) };
NT::OBJECT_ATTRIBUTES oa = { sizeof oa, 0, &name, OBJ_INHERIT, 0, 0 };
HANDLE hEvent( CreateEvent( 0, FALSE, FALSE, 0 ) );
NTSTATUS status = NTDLL::ZwOpenFile( &hDirectory,
GENERIC_READ | SYNCHRONIZE,
&oa,
&iosb,
FILE_SHARE_READ | FILE_SHARE_WRITE |
FILE_SHARE_DELETE,
FILE_SYNCHRONOUS_IO_NONALERT |
FILE_DIRECTORY_FILE);
if ( !NT_SUCCESS( status ) )
{
return status;
}
BYTE byBuffer[ sizeof( NT::PFILE_ID_FULL_DIR_INFORMATION ) +
_MAX_PATH ];
memset( &iosb, 0, sizeof( iosb ) );
status = NTDLL::ZwQueryDirectoryFile( hDirectory, hEvent, 0, 0,
&iosb, byBuffer, _countof( byBuffer ), NT::FileIdBothDirectoryInformation,
FALSE, 0, TRUE );
Puzzled,
Ernie
.
- Follow-Ups:
- Re: STATUS_ILLEGAL_INSTRUCTION returned by ZwQueryDirectoryFile()
- From: Ernie Billing
- Re: STATUS_ILLEGAL_INSTRUCTION returned by ZwQueryDirectoryFile()
- Prev by Date: Re: Highly responsive serial port
- Next by Date: Re: STATUS_ILLEGAL_INSTRUCTION returned by ZwQueryDirectoryFile()
- Previous by thread: Highly responsive serial port
- Next by thread: Re: STATUS_ILLEGAL_INSTRUCTION returned by ZwQueryDirectoryFile()
- Index(es):