WDK翻译
文章平均质量分 73
Vinc
溪云初起日沉阁,山雨欲来风满楼。
展开
-
Windows文件过滤驱动开发
原文地址:http://blog.sina.com.cn/s/blog_7785041f0101jekb.htmlWindows文件过滤驱动开发 由于项目需要,这十天做了个Windows文件过滤驱动, 感觉windows下的驱动也不是那么的神秘, Mirosoft可以说是把API做到了极致(尽管有时真的是没必要), 他们喜欢把API包装了又包装, 不转载 2016-02-22 09:02:05 · 5414 阅读 · 0 评论 -
RtlUpcaseUnicodeString routine
RtlUpcaseUnicodeString routineRtlUpcaseUnicodeString 转换一个源字符串到大写格式,并把转换后的字符串写入到目标缓冲区中。Syntax NTSTATUS RtlUpcaseUnicodeString( _Inout_ PUNICODE_STRING DestinationString, _In_ PCUNICOD翻译 2016-02-04 16:39:55 · 1161 阅读 · 0 评论 -
RtlAnsiStringToUnicodeString function
RtlAnsiStringToUnicodeString functionRtlAnsiStringToUnicodeString 转换给定的ANSI 源字符串为一个Unicode字符串。Syntax NTSTATUS RtlAnsiStringToUnicodeString( _Inout_ PUNICODE_STRING DestinationString, _In翻译 2016-02-04 16:29:08 · 2451 阅读 · 0 评论 -
RtlFreeUnicodeString routine
RtlFreeUnicodeString routineRtlFreeUnicodeString 释放由RtlAnsiStringToUnicodeString 或者 RtlUpcaseUnicodeString申请的储存空间。Syntax VOID RtlFreeUnicodeString( _Inout_ PUNICODE_STRING UnicodeString);翻译 2016-02-04 16:13:01 · 1157 阅读 · 0 评论 -
RtlUnicodeStringInit function
RtlUnicodeStringInit functionRtlUnicodeStringInit 函数初始化一个 UNICODE_STRING 结构.Syntax NTSTATUS RtlUnicodeStringInit( _Out_ PUNICODE_STRING DestinationString, _In_opt_ NTSTRSAFE_PCWSTR p翻译 2016-02-04 16:07:05 · 1334 阅读 · 0 评论 -
UNICODE_STRING structure
UNICODE_STRING structureThe UNICODE_STRING structure is used to define Unicode strings.Syntaxtypedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; PWSTR Buffer;} UNIC翻译 2016-02-04 15:44:17 · 802 阅读 · 0 评论 -
ZwWriteFile routine
ZwWriteFile routineThe ZwWriteFile routine 往一个打开的文件里写入数据.Syntax NTSTATUS ZwWriteFile( _In_ HANDLE FileHandle, _In_opt_ HANDLE Event, _In_opt_ PIO_APC_ROUTINE翻译 2016-02-04 15:19:02 · 2901 阅读 · 0 评论 -
ZwReadFile routine
ZwReadFile routineZwReadFile 从一个打开的文件中读取内容Syntax NTSTATUS ZwReadFile( _In_ HANDLE FileHandle, _In_opt_ HANDLE Event, _In_opt_ PIO_APC_ROUTINE ApcRoutine, _In_o翻译 2016-02-04 14:22:52 · 3736 阅读 · 0 评论 -
ZwCreateFile
ZwCreateFile routineZwCreateFile 创建一个新的文件或者打开一个已经存在的文件。SyntaxC++ NTSTATUS ZwCreateFile( _Out_ PHANDLE FileHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJE翻译 2016-02-04 11:15:39 · 8710 阅读 · 0 评论 -
文件重解析点Reparse Points
文件或者目录可以包含一个重解析点,它是一个用户自定义数据的集合。储存它们的程序和解析处理这些数据文件的系统过滤器能懂得这些数据的格式。翻译 2016-02-04 10:27:46 · 3962 阅读 · 0 评论 -
ZwOpenFile [WDK翻译]
ZwOpenFile 提供了一个句柄,通过它可以操作一个文件的数据或者是文件状态,或是文件的属性。ZwOpenFile 提供了ZwCreateFile的一个功能子集(ZwCreateFile能做更多事).翻译 2016-02-03 10:40:03 · 1772 阅读 · 0 评论 -
InitializeObjectAttributes 【MSDN翻译】
InitializeObjectAttributes 初始化一个 OBJECT_ATTRIBUTES 结构用于指定一个需要打开的对象的属性。用于调用者在实际打开此句柄的例程中传入此结构体的指针。除了在系统进程上下文运行中的驱动例程外执行此函数时都必须在参数Attributes 中指定OBJ_KERNEL_HANDLE 属性。此参数限定了句柄仅能被在内核模式下运行的进程打开。翻译 2016-02-03 09:51:53 · 5998 阅读 · 0 评论 -
RtlAnsiStringToUnicodeSize routine
RtlAnsiStringToUnicodeSize routineRtlAnsiStringToUnicodeSize 返回一个ANSI字符串转换为Unicode字符串后需要多少字节的储存空间。Syntax ULONG RtlAnsiStringToUnicodeSize( _In_ PANSI_STRING AnsiString); ParametersA翻译 2016-02-04 16:56:28 · 691 阅读 · 0 评论 -
RtlCompareUnicodeString routine
RtlCompareUnicodeString routineThe RtlCompareUnicodeString routine 比较两个UNICODE_STRINGSyntax LONG RtlCompareUnicodeString( _In_ PCUNICODE_STRING String1, _In_ PCUNICODE_STRING String2,翻译 2016-02-04 17:06:36 · 2061 阅读 · 0 评论 -
RtlCopyUnicodeString routine
RtlCopyUnicodeString routineThe RtlCopyUnicodeString 拷贝源字符串的内容到目的字符串.SyntaxC++ VOID RtlCopyUnicodeString( _Inout_ PUNICODE_STRING DestinationString, _In_opt_ PCUNICODE_STRING SourceS翻译 2016-02-04 17:20:42 · 2143 阅读 · 0 评论 -
定时器精度
定时器精度一个系统定时器通常允许调用者为一个定时器指定一个绝对时间或者是相对时间。例如,见KeWaitForSingleObject,KeSetTimer,或KeDelayExecutionThread。系统时钟的粒度限制了操作系统可以衡量超时时间的精度。系统时间的更新基于每次系统时钟滴答,准确到最后一次时钟滴答。如果调用者指定的是一个绝对的超时时间,定时器超时在指定时间之后的时钟滴答处理翻译 2016-02-21 19:22:57 · 2972 阅读 · 0 评论 -
使用定时器对象
使用定时器对象以下图表说明了怎么样使用一个通知定时器去为一个操作设定一个超时事件,然后等待其他驱动例程处理一个IO请求。如上图表所示,驱动程序必须为定时器对象提供存储空间,并以它作为参数为这个定时器对象调用KeInitializeTimer初始化定时器。驱动程序通常在AddDevice中调用这个函数。在一个特定的线程的上下文中,像是一个驱动创建的线程或是一个正在请求一个同步IO操作翻译 2016-02-21 18:10:54 · 1140 阅读 · 0 评论 -
KeXxxTimer例程, KTIMER对象, 和DPC
KeXxxTimer例程, KTIMER对象, 和DPC自Windows 2000开始, 一系列KeXxxTimer 例程可用于管理计时器。这些例程使用基于KTIMER结构的定时器对象。为了创建一个计时器对象,一个驱动程序首先申请一个KTIMER结构体的存储空间。然后驱动程序调用例如KeInitializeTimer或KeInitializeTimerEx的一个例程去初始化这个结构。一个定翻译 2016-02-21 17:04:23 · 1378 阅读 · 0 评论 -
内核调度对象简介
内核调度对象简介内核定义了一系列叫做内核调度对象,或简称调度对象的对象类型。调度对象包含定时器对象,事件对象,信号量对象,互斥体对象和线程对象。的一个“非任意”线程上下文上执行时,可以使用内核调度对象作同步机制使用。调度对象的状态每一种内核定义的调度对象类型拥有两种状态:信号态或非型号态。 一组线程的其中一个或者多个线程可以通过调用KeWaitForSingleObject,翻译 2016-02-21 17:02:47 · 1358 阅读 · 0 评论 -
驱动事件对象
事件对象驱动程序可以使用一个事件对象挂起当前线程等待直到底下一层驱动程序处理一个等待者驱动程序建立的IRP。 拥有驱动创建的线程的驱动程序,或者在一个同步IO请求的completion例程上等待的驱动派遣例程同样可以使用一个事件对象在他们的线程和(或)其他驱动例程之间同步操作。这一章包含以下主题:定义和使用一个事件对象标准事件对象定义和使用一个事件对象任何使用一个事翻译 2016-02-21 16:30:01 · 1123 阅读 · 0 评论 -
FILE_DISPOSITION_INFORMATION structure
FILE_DISPOSITION_INFORMATION structureFILE_DISPOSITION_INFORMATION 结构用作ZwSetInformationFile 例程的参数typedef struct _FILE_DISPOSITION_INFORMATION { BOOLEAN DeleteFile;} FILE_DISPOSITION_INFORMATI翻译 2016-03-05 13:23:47 · 1233 阅读 · 0 评论 -
IRP_MJ_SET_INFORMATION
IRP_MJ_SET_INFORMATION什么时候发送IO管理器和其他操作系统组件,其他内核模式驱动程序发送 IRP_MJ_SET_INFORMATION 请求。例如当用户模式下的应用程序调用一个像SetEndOfFile 的微软Win32函数,或者是内核模式下的组件调用ZwSetInformationFile时会发送这个请求。操作:文件系统驱动程序文件系统驱动程序应当提取和解码翻译 2016-03-05 10:46:28 · 2234 阅读 · 0 评论 -
FILE_OBJECT structure
FILE_OBJECT structureFILE_OBJECT 结构被系统用来表示一个文件对象,在用户模式的保护下的子系统中,一个问加你对象代表一个打开的文件,设备,目录或卷,对设备和中间层驱动而言,一个文件对象通常代表了一个设备对象,对文件系统栈中的驱动程序而言,一个文件对象通常代表了一个目录或者文件。一个文件对象是部分不透明的,一些具体类型的驱动程序,像文件系统驱动和网络传输驱动使用翻译 2016-02-05 10:03:09 · 3034 阅读 · 0 评论 -
MmAllocatePagesForMdl routine
MmAllocatePagesForMdl routineMmAllocatePagesForMdl 例程申请一块以零填充的,非分页的,物理内存页面给一个MDL。Syntax PMDL MmAllocatePagesForMdl( _In_ PHYSICAL_ADDRESS LowAddress, _In_ PHYSICAL_ADDRESS HighAddress,翻译 2016-02-17 22:28:36 · 2124 阅读 · 0 评论 -
MmProbeAndLockPages routine
MmProbeAndLockPages routineMmProbeAndLockPages 例程检验一些指定的虚拟内存页面,使它们常驻内存(非分页,不被交换), 在内存中锁定这些页面。Syntax VOID MmProbeAndLockPages( _Inout_ PMDLX MemoryDescriptorList, _In_ KPROCE翻译 2016-02-17 21:54:24 · 1110 阅读 · 1 评论 -
RtlEqualUnicodeString routine
RtlEqualUnicodeString routineThe RtlEqualUnicodeString routine 比较两个UNICODE_STRING判断是否一样。Syntax BOOLEAN RtlEqualUnicodeString( _In_ PCUNICODE_STRING String1, _In_ PCUNICODE_STRING String2翻译 2016-02-05 10:41:14 · 1990 阅读 · 0 评论 -
Mounting a Volume
Mounting a Volume卷的加载过程典型地由一个打开逻辑卷(即为一个分区或者动态卷)上的文件的请求触发。此过程如下所示:1. 一个用户模式应用程序调用CreateFile 打开(创建)一个文件。或者一个内核模式驱动程序调用ZwCreateFile orIoCreateFileSpecifyDeviceObjectHint.2. I/O Manager确定哪个逻辑卷是请翻译 2016-02-13 17:01:57 · 509 阅读 · 0 评论 -
PDRIVER_FS_NOTIFICATION routine
PDRIVER_FS_NOTIFICATION routinePDRIVER_FS_NOTIFICATION-类型的例程在一个文件系统使用IoRegisterFileSystem 或 IoUnregisterFileSystem注册或者注销自己时被系统调用。Syntax DRIVER_FS_NOTIFICATION DriverNotificationRoutine; VO翻译 2016-02-13 14:31:17 · 340 阅读 · 0 评论 -
ObQueryNameString routine
ObQueryNameString routineObQueryNameString 例程返回一个调用者指定的对象的名字(如果有)。Syntax NTSTATUS ObQueryNameString( _In_ PVOID Object, _Out_opt_ POBJECT_NAME_INFORMATION ObjectN翻译 2016-02-13 13:47:30 · 1012 阅读 · 0 评论 -
IRP
IRPIRP 结构体部分不透明,它代表了一个IO请求包。驱动程序可以使用结构的以下成员:typedef struct _IRP { . . PMDL MdlAddress; ULONG Flags; union { struct _IRP *MasterIrp; . . PVOID SystemBuffer;翻译 2016-02-05 17:07:32 · 3790 阅读 · 0 评论 -
IO_STACK_LOCATION与IRP的一点笔记
作者:代码疯子原文地址http://www.programlife.net/io_stack_location-irp.htmlIO_STACK_LOCATION和IRP算是驱动中两个很基础的东西,为了理解这两个东西,找了一点资料。1. IRP可以看成是Win32窗口程序中的消息(Message),DEVICE_OBJECT可转载 2016-02-05 16:52:37 · 1855 阅读 · 0 评论 -
ZwQueryValueKey routine
ZwQueryValueKey routineZwQueryValueKey 返回一个注册表键的值。Syntax NTSTATUS ZwQueryValueKey( _In_ HANDLE KeyHandle, _In_ PUNICODE_STRING ValueName, _I翻译 2016-02-05 15:22:26 · 1870 阅读 · 0 评论 -
ZwOpenKey routine
ZwOpenKey routineZwOpenKey 例程打开一个已经存在的注册表键。Syntax NTSTATUS ZwOpenKey( _Out_ PHANDLE KeyHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttrib翻译 2016-02-05 15:03:28 · 1966 阅读 · 0 评论 -
KeLeaveCriticalRegion routine
KeLeaveCriticalRegion routineKeLeaveCriticalRegion 重启用被前个KeEnterCriticalRegion禁止的普通内核模式APC的投放。Syntax VOID KeLeaveCriticalRegion(void); ParametersThis routine has no parameters.Return v翻译 2016-02-05 14:48:34 · 702 阅读 · 0 评论 -
KeEnterCriticalRegion routine
KeEnterCriticalRegion routineKeEnterCriticalRegion 例程展示禁用普通内核APC的执行,但不禁止特殊内核APC的运行。Syntax VOID KeEnterCriticalRegion(void); Parameters无参Return valueNoneRemarks驱动程序调用这个例程进入一个关键区,在翻译 2016-02-05 14:43:09 · 2232 阅读 · 0 评论 -
ExAcquireResourceExclusiveLite routine
ExAcquireResourceExclusiveLite routineExAcquireResourceExclusiveLite 获取线程对资源的独占访问权。Syntax BOOLEAN ExAcquireResourceExclusiveLite( _Inout_ PERESOURCE Resource, _In_ BOOLEAN Wait);翻译 2016-02-05 14:32:05 · 1744 阅读 · 0 评论 -
ExAcquireResourceSharedLite routine
ExAcquireResourceSharedLite routineExAcquireResourceSharedLite 获取一个给定的资源以用于给调用者线程共享访问。Syntax BOOLEAN ExAcquireResourceSharedLite( _Inout_ PERESOURCE Resource, _In_ BOOLEAN Wait);翻译 2016-02-05 14:00:22 · 1338 阅读 · 0 评论 -
ExDeleteResourceLite routine
ExDeleteResourceLite routineExDeleteResourceLite 从系统资源列表中删除给定的资源。Syntax NTSTATUS ExDeleteResourceLite( _Inout_ PERESOURCE Resource); ParametersResource [in, out]一个指向需要删除的,已经被初始化的,翻译 2016-02-05 13:39:57 · 706 阅读 · 0 评论 -
ExInitializeResourceLite routine
ExInitializeResourceLite routineExInitializeResourceLite routine 初始化一个资源变量。Syntax NTSTATUS ExInitializeResourceLite( _Out_ PERESOURCE Resource); ParametersResource [out]指向一个调用者自定义翻译 2016-02-05 13:35:12 · 1245 阅读 · 0 评论 -
MmGetSystemRoutineAddress routine
MmGetSystemRoutineAddress routineMmGetSystemRoutineAddress 返回一个参数SystemRoutineName指定的函数指针。returns a pointer to a function specified by SystemRoutineName.Syntax PVOID MmGetSystemRoutineAddress(翻译 2016-02-05 13:22:50 · 1300 阅读 · 0 评论