📄 statusr_test.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 + -