?? winddk.h
字號:
typedef enum _DEVICE_RELATION_TYPE { BusRelations, EjectionRelations, PowerRelations, RemovalRelations, TargetDeviceRelation, SingleBusRelations} DEVICE_RELATION_TYPE, *PDEVICE_RELATION_TYPE;typedef struct _DEVICE_RELATIONS { ULONG Count; PDEVICE_OBJECT Objects[1];} DEVICE_RELATIONS, *PDEVICE_RELATIONS;typedef struct _SCATTER_GATHER_ELEMENT { PHYSICAL_ADDRESS Address; ULONG Length; ULONG_PTR Reserved;} SCATTER_GATHER_ELEMENT, *PSCATTER_GATHER_ELEMENT;typedef struct _SCATTER_GATHER_LIST { ULONG NumberOfElements; ULONG_PTR Reserved; SCATTER_GATHER_ELEMENT Elements[0];} SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST;typedef struct _MDL { struct _MDL *Next; CSHORT Size; CSHORT MdlFlags; struct _EPROCESS *Process; PVOID MappedSystemVa; PVOID StartVa; ULONG ByteCount; ULONG ByteOffset;} MDL, *PMDL;#define MDL_MAPPED_TO_SYSTEM_VA 0x0001#define MDL_PAGES_LOCKED 0x0002#define MDL_SOURCE_IS_NONPAGED_POOL 0x0004#define MDL_ALLOCATED_FIXED_SIZE 0x0008#define MDL_PARTIAL 0x0010#define MDL_PARTIAL_HAS_BEEN_MAPPED 0x0020#define MDL_IO_PAGE_READ 0x0040#define MDL_WRITE_OPERATION 0x0080#define MDL_PARENT_MAPPED_SYSTEM_VA 0x0100#define MDL_FREE_EXTRA_PTES 0x0200#define MDL_IO_SPACE 0x0800#define MDL_NETWORK_HEADER 0x1000#define MDL_MAPPING_CAN_FAIL 0x2000#define MDL_ALLOCATED_MUST_SUCCEED 0x4000#define MDL_MAPPING_FLAGS ( \ MDL_MAPPED_TO_SYSTEM_VA | \ MDL_PAGES_LOCKED | \ MDL_SOURCE_IS_NONPAGED_POOL | \ MDL_PARTIAL_HAS_BEEN_MAPPED | \ MDL_PARENT_MAPPED_SYSTEM_VA | \ MDL_SYSTEM_VA | \ MDL_IO_SPACE)typedef VOID DDKAPI(*PPUT_DMA_ADAPTER)( /*IN*/ PDMA_ADAPTER DmaAdapter);typedef PVOID DDKAPI(*PALLOCATE_COMMON_BUFFER)( /*IN*/ PDMA_ADAPTER DmaAdapter, /*IN*/ ULONG Length, /*OUT*/ PPHYSICAL_ADDRESS LogicalAddress, /*IN*/ BOOLEAN CacheEnabled);typedef VOID DDKAPI(*PFREE_COMMON_BUFFER)( /*IN*/ PDMA_ADAPTER DmaAdapter, /*IN*/ ULONG Length, /*IN*/ PHYSICAL_ADDRESS LogicalAddress, /*IN*/ PVOID VirtualAddress, /*IN*/ BOOLEAN CacheEnabled);typedef NTSTATUS DDKAPI(*PALLOCATE_ADAPTER_CHANNEL)( /*IN*/ PDMA_ADAPTER DmaAdapter, /*IN*/ PDEVICE_OBJECT DeviceObject, /*IN*/ ULONG NumberOfMapRegisters, /*IN*/ PDRIVER_CONTROL ExecutionRoutine, /*IN*/ PVOID Context);typedef BOOLEAN DDKAPI(*PFLUSH_ADAPTER_BUFFERS)( /*IN*/ PDMA_ADAPTER DmaAdapter, /*IN*/ PMDL Mdl, /*IN*/ PVOID MapRegisterBase, /*IN*/ PVOID CurrentVa, /*IN*/ ULONG Length, /*IN*/ BOOLEAN WriteToDevice);typedef VOID DDKAPI(*PFREE_ADAPTER_CHANNEL)( /*IN*/ PDMA_ADAPTER DmaAdapter);typedef VOID DDKAPI(*PFREE_MAP_REGISTERS)( /*IN*/ PDMA_ADAPTER DmaAdapter, PVOID MapRegisterBase, ULONG NumberOfMapRegisters);typedef PHYSICAL_ADDRESS DDKAPI(*PMAP_TRANSFER)( /*IN*/ PDMA_ADAPTER DmaAdapter, /*IN*/ PMDL Mdl, /*IN*/ PVOID MapRegisterBase, /*IN*/ PVOID CurrentVa, /*IN OUT*/ PULONG Length, /*IN*/ BOOLEAN WriteToDevice);typedef ULONG DDKAPI(*PGET_DMA_ALIGNMENT)( /*IN*/ PDMA_ADAPTER DmaAdapter);typedef ULONG DDKAPI(*PREAD_DMA_COUNTER)( /*IN*/ PDMA_ADAPTER DmaAdapter);typedef NTSTATUS DDKAPI(*PGET_SCATTER_GATHER_LIST)( /*IN*/ PDMA_ADAPTER DmaAdapter, /*IN*/ PDEVICE_OBJECT DeviceObject, /*IN*/ PMDL Mdl, /*IN*/ PVOID CurrentVa, /*IN*/ ULONG Length, /*IN*/ PDRIVER_LIST_CONTROL ExecutionRoutine, /*IN*/ PVOID Context, /*IN*/ BOOLEAN WriteToDevice);typedef VOID DDKAPI(*PPUT_SCATTER_GATHER_LIST)( /*IN*/ PDMA_ADAPTER DmaAdapter, /*IN*/ PSCATTER_GATHER_LIST ScatterGather, /*IN*/ BOOLEAN WriteToDevice);typedef NTSTATUS DDKAPI(*PCALCULATE_SCATTER_GATHER_LIST_SIZE)( /*IN*/ PDMA_ADAPTER DmaAdapter, /*IN*/ PMDL Mdl /*OPTIONAL*/, /*IN*/ PVOID CurrentVa, /*IN*/ ULONG Length, /*OUT*/ PULONG ScatterGatherListSize, /*OUT*/ PULONG pNumberOfMapRegisters /*OPTIONAL*/);typedef NTSTATUS DDKAPI(*PBUILD_SCATTER_GATHER_LIST)( /*IN*/ PDMA_ADAPTER DmaAdapter, /*IN*/ PDEVICE_OBJECT DeviceObject, /*IN*/ PMDL Mdl, /*IN*/ PVOID CurrentVa, /*IN*/ ULONG Length, /*IN*/ PDRIVER_LIST_CONTROL ExecutionRoutine, /*IN*/ PVOID Context, /*IN*/ BOOLEAN WriteToDevice, /*IN*/ PVOID ScatterGatherBuffer, /*IN*/ ULONG ScatterGatherLength);typedef NTSTATUS DDKAPI(*PBUILD_MDL_FROM_SCATTER_GATHER_LIST)( /*IN*/ PDMA_ADAPTER DmaAdapter, /*IN*/ PSCATTER_GATHER_LIST ScatterGather, /*IN*/ PMDL OriginalMdl, /*OUT*/ PMDL *TargetMdl);typedef struct _DMA_OPERATIONS { ULONG Size; PPUT_DMA_ADAPTER PutDmaAdapter; PALLOCATE_COMMON_BUFFER AllocateCommonBuffer; PFREE_COMMON_BUFFER FreeCommonBuffer; PALLOCATE_ADAPTER_CHANNEL AllocateAdapterChannel; PFLUSH_ADAPTER_BUFFERS FlushAdapterBuffers; PFREE_ADAPTER_CHANNEL FreeAdapterChannel; PFREE_MAP_REGISTERS FreeMapRegisters; PMAP_TRANSFER MapTransfer; PGET_DMA_ALIGNMENT GetDmaAlignment; PREAD_DMA_COUNTER ReadDmaCounter; PGET_SCATTER_GATHER_LIST GetScatterGatherList; PPUT_SCATTER_GATHER_LIST PutScatterGatherList; PCALCULATE_SCATTER_GATHER_LIST_SIZE CalculateScatterGatherList; PBUILD_SCATTER_GATHER_LIST BuildScatterGatherList; PBUILD_MDL_FROM_SCATTER_GATHER_LIST BuildMdlFromScatterGatherList;} DMA_OPERATIONS, *PDMA_OPERATIONS;typedef struct _DMA_ADAPTER { USHORT Version; USHORT Size; PDMA_OPERATIONS DmaOperations;} DMA_ADAPTER;typedef enum _FILE_INFORMATION_CLASS { FileDirectoryInformation = 1, FileFullDirectoryInformation, FileBothDirectoryInformation, FileBasicInformation, FileStandardInformation, FileInternalInformation, FileEaInformation, FileAccessInformation, FileNameInformation, FileRenameInformation, FileLinkInformation, FileNamesInformation, FileDispositionInformation, FilePositionInformation, FileFullEaInformation, FileModeInformation, FileAlignmentInformation, FileAllInformation, FileAllocationInformation, FileEndOfFileInformation, FileAlternateNameInformation, FileStreamInformation, FilePipeInformation, FilePipeLocalInformation, FilePipeRemoteInformation, FileMailslotQueryInformation, FileMailslotSetInformation, FileCompressionInformation, FileObjectIdInformation, FileCompletionInformation, FileMoveClusterInformation, FileQuotaInformation, FileReparsePointInformation, FileNetworkOpenInformation, FileAttributeTagInformation, FileTrackingInformation, FileIdBothDirectoryInformation, FileIdFullDirectoryInformation, FileValidDataLengthInformation, FileShortNameInformation, FileMaximumInformation} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;typedef struct _FILE_POSITION_INFORMATION { LARGE_INTEGER CurrentByteOffset; } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION; typedef struct _FILE_ALIGNMENT_INFORMATION { ULONG AlignmentRequirement;} FILE_ALIGNMENT_INFORMATION;typedef struct _FILE_NAME_INFORMATION { ULONG FileNameLength; WCHAR FileName[1]; } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION; typedef struct _FILE_BASIC_INFORMATION { LARGE_INTEGER CreationTime; LARGE_INTEGER LastAccessTime; LARGE_INTEGER LastWriteTime; LARGE_INTEGER ChangeTime; ULONG FileAttributes;} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;typedef struct _FILE_STANDARD_INFORMATION { LARGE_INTEGER AllocationSize; LARGE_INTEGER EndOfFile; ULONG NumberOfLinks; BOOLEAN DeletePending; BOOLEAN Directory;} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;typedef struct _FILE_NETWORK_OPEN_INFORMATION { LARGE_INTEGER CreationTime; LARGE_INTEGER LastAccessTime; LARGE_INTEGER LastWriteTime; LARGE_INTEGER ChangeTime; LARGE_INTEGER AllocationSize; LARGE_INTEGER EndOfFile; ULONG FileAttributes; } FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION; typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION { ULONG FileAttributes; ULONG ReparseTag; } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;typedef struct _FILE_DISPOSITION_INFORMATION { BOOLEAN DoDeleteFile; } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION; typedef struct _FILE_END_OF_FILE_INFORMATION { LARGE_INTEGER EndOfFile; } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION; typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION { LARGE_INTEGER ValidDataLength; } FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION; typedef enum _FSINFOCLASS { FileFsVolumeInformation = 1, FileFsLabelInformation, FileFsSizeInformation, FileFsDeviceInformation, FileFsAttributeInformation, FileFsControlInformation, FileFsFullSizeInformation, FileFsObjectIdInformation, FileFsDriverPathInformation, FileFsMaximumInformation} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;typedef struct _FILE_FS_DEVICE_INFORMATION { DEVICE_TYPE DeviceType; ULONG Characteristics;} FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION;typedef struct _FILE_FULL_EA_INFORMATION { ULONG NextEntryOffset; UCHAR Flags; UCHAR EaNameLength; USHORT EaValueLength; CHAR EaName[1];} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;typedef ULONG_PTR ERESOURCE_THREAD;typedef ERESOURCE_THREAD *PERESOURCE_THREAD;typedef struct _OWNER_ENTRY { ERESOURCE_THREAD OwnerThread; _ANONYMOUS_UNION union { LONG OwnerCount; ULONG TableSize; } DUMMYUNIONNAME;} OWNER_ENTRY, *POWNER_ENTRY;/* ERESOURCE.Flag */#define ResourceNeverExclusive 0x0010#define ResourceReleaseByOtherThread 0x0020#define ResourceOwnedExclusive 0x0080#define RESOURCE_HASH_TABLE_SIZE 64typedef struct _ERESOURCE { LIST_ENTRY SystemResourcesList; POWNER_ENTRY OwnerTable; SHORT ActiveCount; USHORT Flag; PKSEMAPHORE SharedWaiters; PKEVENT ExclusiveWaiters; OWNER_ENTRY OwnerThreads[2]; ULONG ContentionCount; USHORT NumberOfSharedWaiters; USHORT NumberOfExclusiveWaiters; _ANONYMOUS_UNION union { PVOID Address; ULONG_PTR CreatorBackTraceIndex; } DUMMYUNIONNAME; KSPIN_LOCK SpinLock;} ERESOURCE, *PERESOURCE;/* NOTE: PVOID for methods to avoid 'assignment from incompatible pointer type' warning */typedef struct _DRIVER_EXTENSION { struct _DRIVER_OBJECT *DriverObject; PVOID AddDevice; ULONG Count; UNICODE_STRING ServiceKeyName;} DRIVER_EXTENSION, *PDRIVER_EXTENSION;typedef BOOLEAN DDKAPI(*PFAST_IO_CHECK_IF_POSSIBLE)( /*IN*/ struct _FILE_OBJECT *FileObject, /*IN*/ PLARGE_INTEGER FileOffset, /*IN*/ ULONG Length, /*IN*/ BOOLEAN Wait, /*IN*/ ULONG LockKey, /*IN*/ BOOLEAN CheckForReadOperation, /*OUT*/ PIO_STATUS_BLOCK IoStatus, /*IN*/ struct _DEVICE_OBJECT *DeviceObject);typedef BOOLEAN DDKAPI(*PFAST_IO_READ)( /*IN*/ struct _FILE_OBJECT *FileObject, /*IN*/ PLARGE_INTEGER FileOffset, /*IN*/ ULONG Length, /*IN*/ BOOLEAN Wait, /*IN*/ ULONG LockKey, /*OUT*/ PVOID Buffer, /*OUT*/ PIO_STATUS_BLOCK IoStatus, /*IN*/ struct _DEVICE_OBJECT *DeviceObject);typedef BOOLEAN DDKAPI(*PFAST_IO_WRITE)( /*IN*/ struct _FILE_OBJECT *FileObject, /*IN*/ PLARGE_INTEGER FileOffset, /*IN*/ ULONG Length, /*IN*/ BOOLEAN Wait, /*IN*/ ULONG LockKey, /*IN*/ PVOID Buffer, /*OUT*/ PIO_STATUS_BLOCK IoStatus, /*IN*/ struct _DEVICE_OBJECT *DeviceObject);typedef BOOLEAN DDKAPI(*PFAST_IO_QUERY_BASIC_INFO)( /*IN*/ struct _FILE_OBJECT *FileObject, /*IN*/ BOOLEAN Wait, /*OUT*/ PFILE_BASIC_INFORMATION Buffer, /*OUT*/ PIO_STATUS_BLOCK IoStatus, /*IN*/ struct _DEVICE_OBJECT *DeviceObject);typedef BOOLEAN DDKAPI(*PFAST_IO_QUERY_STANDARD_INFO)( /*IN*/ struct _FILE_OBJECT *FileObject, /*IN*/ BOOLEAN Wait, /*OUT*/ PFILE_STANDARD_INFORMATION Buffer, /*OUT*/ PIO_STATUS_BLOCK IoStatus, /*IN*/ struct _DEVICE_OBJECT *DeviceObject);typedef BOOLEAN DDKAPI(*PFAST_IO_LOCK)( /*IN*/ struct _FILE_OBJECT *FileObject, /*IN*/ PLARGE_INTEGER FileOffset, /*IN*/ PLARGE_INTEGER Length, PEPROCESS ProcessId, ULONG Key, BOOLEAN FailImmediately, BOOLEAN ExclusiveLock, /*OUT*/ PIO_STATUS_BLOCK IoStatus, /*IN*/ struct _DEVICE_OBJECT *DeviceObject);typedef BOOLEAN DDKAPI(*PFAST_IO_UNLOCK_SINGLE)( /*IN*/ struct _FILE_OBJECT *F
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -