自己構造IRP包來實現驅動與驅動之間的通訊(成功筆記下來以後參考用)

#include <ntddk.h>#define DEVICE_NAMEL"\\device\\NTModelDrv"#define LINK_NAMEL"\\dosDevices\\NTModelDrv"#define IOCTL_BASE 0x8000#define MY_CTL_CODE(i) \CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_BASE+i, METHOD_BUFFERED, FILE_ANY_ACCESS)#define IOCTL_

Win API HOOK 之 Detours

相信不少剛學HOOK的朋友,還在苦惱HOOK代碼寫起來麻煩,有的朋友甚至不會計算HOOK地址.Detours 解決了所有的問題了.Detours 是M$ 出的一個庫.:http://research.microsoft.com/en-us/projects/detours/  最新版本是3.0. 下載後,需自行安裝 編譯.配置:1 將Detours安裝目錄中的src拷貝至VS安裝目錄/Microsoft Visual Studio 9.0/VC/bin2 開啟CMD控制台3 將/Microsof

裝置對象(DEVICE_OBJECT)—————–裝置名稱

裝置對象(DEVICE_OBJECT)-----------------主要成員一、裝置對象(DEVICE_OBJECT)kd> dt _device_objectntdll!_DEVICE_OBJECT   +0x000 Type             : Int2B   +0x002 Size             : Uint2B   +0x004 ReferenceCount   : Int4B   +0x008 DriverObject     : Ptr32

裝置對象(DEVICE_OBJECT)—————–主要成員

一、裝置對象(DEVICE_OBJECT)kd> dt _device_objectntdll!_DEVICE_OBJECT   +0x000 Type             : Int2B   +0x002 Size             : Uint2B   +0x004 ReferenceCount   : Int4B   +0x008 DriverObject     : Ptr32 _DRIVER_OBJECT  ;該裝置所屬的驅動對象   +0x00c

DebugPrint格式輸出

DebugPrint格式說明符符號                                 格式說明符                                        類型%c, %lc                           ANSI字元                                            char%C, %wc                         寬字元                              

windbg調試命令1(k、u、x)

k*命令顯示給定線程的呼叫堆疊,以及其他相關資訊~0

windbg調試命令2(!gle、g、p)

!gle 擴充顯示當前線程的最後一個錯誤碼。這個太好記了,getlasterror取首字母:0:002> !gle  LastErrorValue: (Win32) 0 (0) - <Unable to get error code text>  LastStatusValue: (NTSTATUS) 0 - STATUS_WAIT_0  0:002> !gleLastErrorValue: (Win32) 0 (0) - <Unable to get error

irp的處理,免得忘了

IntroductionOne of the most frequently done tasks in Windows Driver Model (WDM) drivers is sending input/output request packets (IRPs) from one driver to another driver. A driver either creates its own IRP and sends it to a lower driver, or the

驅動程式時應當避免的事項列表

下面是開發人員在使用 Windows NT 裝置驅動程式時應當避免的事項列表: 1. 一定不要在沒有標註 I/O 請求資料包 (IRP) 掛起 (IoMarkIrpPending) 的情況下通過調度常式返回 STATUS_PENDING。 2. 一定不要通過插斷服務常式 (ISR) 調用 KeSynchronizeExecution。 它會使系統死結。 3. 一定不要將 DeviceObject->Flags 設定為 DO_BUFFERED_IO 和 DO_DIRECT_IO。 它會擾亂系

StartIO常式————IoStartPacket、IoStartNextPacket、IoCancelIrp實現代碼

StartIO常式------------IoStartPacket、IoStartNextPacket、IoCancelIrp實現代碼根據wdk代碼做的IoStartPacket、IoStartNextPacket、IoCancelIrp簡化版:VOID IoStartPacket(     IN PDEVICE_OBJECT DeviceObject,     IN PIRP Irp,     IN PULONG Key OPTIONAL,     IN PDRIVER_CANCEL

LIST_ENTRY應用操作

typedef struct _FILE_LIST_ENTRY {LIST_ENTRY Entry;PWSTR NameBuffer;} FILE_LIST_ENTRY, *PFILE_LIST_ENTRY;    LIST_ENTRY            listHead;PFILE_LIST_ENTRY       

Short Message LPC機理分析

Short Message LPC機理分析處理序間通訊(IPC)是在多任務作業系統或連網的電腦之間啟動並執行程式和進程所用的通訊技術。有兩種類型的處理序間通訊。本地程序呼叫(LPC)和遠端程序呼叫(RPC)。出於未知的原因,微軟沒有公開 LPC 的介面。微軟為機器間的客戶機伺服器通訊提供了一套 RPC。Windows NT最佳化了RPC,將其轉為了LPC,只不過是客戶機伺服器全在同一台機器上罷了。   本文只討論Short-Message LPC通訊過程,引用一張流程圖可以全部包括,如下:  

windbg調試命令4(使用者層.dump)

Windbg產生dump檔案的方法:程式崩潰(crash)的時候, 為了以後能夠調試分析問題, 可以使用WinDBG要把當時程式記憶體空間資料都儲存下來,產生的檔案稱為dump 檔案。 步驟:1) 開啟WinDBG並將之Attach 到crash的程式進程2) 輸入產生dump 檔案的命令WinDBG產生dump 檔案的命令是 .dump ,可以選擇不同的參數來產生不同類型的dump檔案。選項(1): /m命令列樣本:.dump /m C:\dumps\myapp.dmp註解:

磁碟過濾驅動中關於DiskDeviceControl處理

http://bbs.pediy.com/showthread.php?t=167696你看看WDK src\storage\class\disk\disk.c裡的DiskDeviceControl,裡邊有磁碟裝置需要處理的所有IOCTL的過程PS:如果你測試的是XP系統,那麼不要看最新的WDK裡的DISK源碼,要看與XP匹配WDK的DISK源碼才好。代碼:__control_entrypoint(DeviceDriver)NTSTATUSDiskDeviceControl(    PDEVIC

windbg調試命令6(!peb、!teb)

windbg調試命令6(!peb、!teb)PEB(Process Environment Block,進程環境塊)存放進程資訊,每個進程都有自己的PEB資訊。位於使用者地址空間。TEB(Thread Environment Block,線程環境塊)系統在此TEB中儲存頻繁使用的線程相關的資料。位於使用者地址空間,在比 PEB 所在地址低的地方。進程中的每個線程都有自己的一個TEB。調試的程式的時候,瞭解PEB和TEB往往對分析很有協助。 WinDBG中 !peb 和 !teb

摘除XP系統LoadImageNotifyRoutine回調常式

在XP系統下調用PsSetLoadImageNotifyRoutine註冊LoadImage回調常式,就能夠在每個進程或者DLL載入的時候註冊的常式得到回調。看看PsSetLoadImageNotifyRoutine的代碼kd> u PsSetLoadImageNotifyRoutine L22nt!PsSetLoadImageNotifyRoutine:805c718c 8bff            mov     edi,edi805c718e 55            

一種錯誤處理的寫法(學習)

CString IOCPS::ErrorCode2Text(DWORD dw){    CString error="";    // Put your own common error text here (give more explaination etc..)     switch(dw)    {    case WSAEFAULT:        error="WSAEFAULT    The buf parameter is not completely contained in

在系統服務中與案頭進行互動編程實現

最進在寫服務端的代碼,裡面用到了FindWindow函數,卻找不到指定視窗,後來才知道服務中不與視窗打交道,要進行桌面視窗互動要用下面的方法來實現,記錄如下,以備後用int Find(){ HWND hWndQQ = NULL; HWINSTA hstaSave; LPCWSTR lpStation = L"WinSta0"; LPCWSTR lpDesk = L"default"; HWINSTA hstaUser;  HDESK hdeskSave; HDESK

ObReferenceObjectByName用法(自己測試成功)

//全域的一個物件類型extern POBJECT_TYPE *IoDriverObjectType; 函數原型聲明NTSTATUSObReferenceObjectByName (    __in PUNICODE_STRING ObjectName,    __in ULONG Attributes,    __in_opt PACCESS_STATE AccessState,    __in_opt ACCESS_MASK DesiredAccess,    __in

一個可以過濾串口輸入的過濾驅動

在看了《寒江獨釣--Windows核心安全編程》一書,根據書中所講編寫#include <ntddk.h>#include <ntstrsafe.h>#define NTSTRSAFE_LIB#define CCP_MAX_COM_ID 32 //設定最大COM連接埠個數//儲存所有過濾裝置指標static PDEVICE_OBJECT s_fltobj[CCP_MAX_COM_ID]= { 0 };static PDEVICE_OBJECT s_nextobj[CCP_

總頁數: 61357 1 .... 16093 16094 16095 16096 16097 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.