阅读:2102回复:3
谁有OPEN_PACKET结构?
Faint,俺现在除了知道这玩意儿大小为0x60外啥都不知道!
|
|
沙发#
发布于:2007-08-12 02:16
//
// Open packet used as a context for Device/File parsing so that the parse // routine can know what operation is being requested. // typedef struct _OPEN_PACKET { CSHORT Type; CSHORT Size; PFILE_OBJECT FileObject; NTSTATUS FinalStatus; ULONG_PTR Information; ULONG ParseCheck; PFILE_OBJECT RelatedFileObject; OBJECT_ATTRIBUTES OriginalAttributes; LARGE_INTEGER AllocationSize; ULONG CreateOptions; USHORT FileAttributes; USHORT ShareAccess; PVOID EaBuffer; ULONG EaLength; ULONG Options; ULONG Disposition; PFILE_BASIC_INFORMATION BasicInformation; PFILE_NETWORK_OPEN_INFORMATION NetworkInformation; CREATE_FILE_TYPE CreateFileType; PVOID MailslotOrPipeParameters; BOOLEAN Override; BOOLEAN QueryOnly; BOOLEAN DeleteOnly; BOOLEAN FullAttributes; PDUMMY_FILE_OBJECT DummyFileObject; ULONG InternalFlags; //PIO_DRIVER_CREATE_CONTEXT DriverCreateContext; Vista only, needs ROS DDK Update } OPEN_PACKET, *POPEN_PACKET; |
|
板凳#
发布于:2007-08-12 03:20
详细一点的,XP源码版:
// // Define an Open Packet (OP). An OP is used to communicate information // between the NtCreateFile service executing in the context of the caller // and the device object parse routine. It is the parse routine who actually // creates the file object for the file. // typedef struct _OPEN_PACKET { CSHORT Type; CSHORT Size; PFILE_OBJECT FileObject; NTSTATUS FinalStatus; ULONG_PTR Information; ULONG ParseCheck; PFILE_OBJECT RelatedFileObject; // // The following are the open-specific parameters. Notice that the desired // access field is passed through to the parse routine via the object // management architecture, so it does not need to be repeated here. Also // note that the same is true for the file name. // LARGE_INTEGER AllocationSize; ULONG CreateOptions; USHORT FileAttributes; USHORT ShareAccess; PVOID EaBuffer; ULONG EaLength; ULONG Options; ULONG Disposition; // // The following is used when performing a fast query during open to get // back the file attributes for a file. // PFILE_BASIC_INFORMATION BasicInformation; // // The following is used when performing a fast network query during open // to get back the network file attributes for a file. // PFILE_NETWORK_OPEN_INFORMATION NetworkInformation; // // The type of file to create. // CREATE_FILE_TYPE CreateFileType; // // The following pointer provides a way of passing the parameters // specific to the file type of the file being created to the parse // routine. // PVOID ExtraCreateParameters; // // The following is used to indicate that an open of a device has been // performed and the access check for the device has already been done, // but because of a reparse, the I/O system has been called again for // the same device. Since the access check has already been made, the // state cannot handle being called again (access was already granted) // and it need not anyway since the check has already been made. // BOOLEAN Override; // // The following is used to indicate that a file is being opened for the // sole purpose of querying its attributes. This causes a considerable // number of shortcuts to be taken in the parse, query, and close paths. // BOOLEAN QueryOnly; // // The following is used to indicate that a file is being opened for the // sole purpose of deleting it. This causes a considerable number of // shortcurs to be taken in the parse and close paths. // BOOLEAN DeleteOnly; // // The following is used to indicate that a file being opened for a query // only is being opened to query its network attributes rather than just // its FAT file attributes. // BOOLEAN FullAttributes; // // The following pointer is used when a fast open operation for a fast // delete or fast query attributes call is being made rather than a // general file open. The dummy file object is actually stored on the // the caller's stack rather than allocated pool to speed things up. // PDUMMY_FILE_OBJECT LocalFileObject; // // The following is used to indicate we passed through a mount point while // parsing the filename. We use this to do an extra check on the device type // for the final file // BOOLEAN TraversedMountPoint; // // Device object where the create should start if present on the stack // Applicable for kernel opens only. // ULONG InternalFlags; // Passed from IopCreateFile PDEVICE_OBJECT TopDeviceObjectHint; } OPEN_PACKET, *POPEN_PACKET; |
|
|
地板#
发布于:2007-08-13 09:51
THANKS,XP源码,不会吧?
|
|