⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 statusr_test.c

📁 查看NT状态
💻 C
字号:

#include "windows.h"
#include "winioctl.h"
#include "stdio.h"
#include "statusRIoctl.h"


void  try_deviceControl(void);
char cBuffer[512];
DWORD  dwNumberOfBytesRead; 		/* address of number of bytes read		*/
OVERLAPPED  Overlapped; 			/* address of structure for data	    */


ULONG InBuffer;
ULONG OutBuffer;
ULONG ReturnedLength; 
		
HANDLE hTest;

int main(int argc, char **argv) {

    BOOL IoctlResult ;
    DWORD thisError;

    if ((hTest = CreateFile(
                     "\\\\.\\STATUSR",
                     GENERIC_READ | GENERIC_WRITE,
                     0,
                     NULL,
                     OPEN_EXISTING,
                     FILE_ATTRIBUTE_NORMAL,
                     NULL
                     )) != ((HANDLE)-1)) 
    {

      //  printf("Wow - CreateFile really worked!!!\n");
        InBuffer = 0xC0000001L;    // STATUS_UNSUCCESSFUL
        InBuffer = 0xC0000005L;    //        STATUS_ACCESS_VIOLATION


        // initialize the board
        IoctlResult = DeviceIoControl(
                            hTest,             // Handle to device
                            (unsigned long)IOCTL_FAIL_WITH, // IO Control code for Read
                            &InBuffer,         // Buffer to driver.
                            sizeof(InBuffer),  // Length of buffer in bytes.
                            &OutBuffer,        // Buffer from driver.
                            sizeof(OutBuffer), // Length of buffer in bytes.
                            &ReturnedLength,   // Bytes placed in DataBuffer.
                            NULL               // NULL means wait till op. completes.
                            );

            if (IoctlResult)                            // Did the IOCTL succeed?
            {
   	           printf("Ioctl initialize worked\n" );
               
	        }
            else
            {
               thisError = GetLastError(); 
	           printf("Ioctl initialize failed %Lx    %Ld\n",thisError, thisError );
               
            }

        CloseHandle(hTest);

    } 
    else 
    {
        printf("Can't get a handle to statusr\n");
    }

    return 1;

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -