我想初始化USN日志文件:/**
* step 03. 初始化USN日志文件
*/
#include<stdio.h>
#include<iostream>
#include<windows.h>
#include <winioctl.h>
#include<string.h>
using namespace std;
#define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, FILE_ANY_ACCESS) // CREATE_USN_JOURNAL_DATA,
typedef struct {
DWORDLONG MaximumSize;
DWORDLONG AllocationDelta;
} CREATE_USN_JOURNAL_DATA, *PCREATE_USN_JOURNAL_DATA;int main()
{
char fileName[225];
char volName[10]="C:\\";
fileName[0]='\0';
strcpy(fileName,"\\\\.\\");
strcat(fileName,volName);
string fileNameStr=(string)fileName;
fileNameStr.erase(fileNameStr.find_last_of(":")+1);
//获得磁盘驱动器句柄
HANDLE hVol=CreateFileA(fileNameStr.data(),
0,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_READONLY,
NULL);
if(hVol==INVALID_HANDLE_VALUE)printf("获取驱动盘句柄失败--handle:%x error:%d\n",hVol,GetLastError());
else printf("success\n");DWORD br;
CREATE_USN_JOURNAL_DATA cujd;
cujd.MaximumSize = 0; // 0表示使用默认值
cujd.AllocationDelta = 0; // 0表示使用默认值
//初始化USN日志文件
BOOL status = DeviceIoControl(hVol,
FSCTL_CREATE_USN_JOURNAL,
&cujd,
sizeof(cujd),
NULL,
0,
&br,
NULL);
if(0!=status){
printf("success\n");
}else{
printf("初始化USN日志文件失败 —— status:%x error:%d\n", status, GetLastError());
} return 0;
}最后运行结果这是:初始化USN日志失败,error:1在dev和VC6.0下都这样
* step 03. 初始化USN日志文件
*/
#include<stdio.h>
#include<iostream>
#include<windows.h>
#include <winioctl.h>
#include<string.h>
using namespace std;
#define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, FILE_ANY_ACCESS) // CREATE_USN_JOURNAL_DATA,
typedef struct {
DWORDLONG MaximumSize;
DWORDLONG AllocationDelta;
} CREATE_USN_JOURNAL_DATA, *PCREATE_USN_JOURNAL_DATA;int main()
{
char fileName[225];
char volName[10]="C:\\";
fileName[0]='\0';
strcpy(fileName,"\\\\.\\");
strcat(fileName,volName);
string fileNameStr=(string)fileName;
fileNameStr.erase(fileNameStr.find_last_of(":")+1);
//获得磁盘驱动器句柄
HANDLE hVol=CreateFileA(fileNameStr.data(),
0,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_READONLY,
NULL);
if(hVol==INVALID_HANDLE_VALUE)printf("获取驱动盘句柄失败--handle:%x error:%d\n",hVol,GetLastError());
else printf("success\n");DWORD br;
CREATE_USN_JOURNAL_DATA cujd;
cujd.MaximumSize = 0; // 0表示使用默认值
cujd.AllocationDelta = 0; // 0表示使用默认值
//初始化USN日志文件
BOOL status = DeviceIoControl(hVol,
FSCTL_CREATE_USN_JOURNAL,
&cujd,
sizeof(cujd),
NULL,
0,
&br,
NULL);
if(0!=status){
printf("success\n");
}else{
printf("初始化USN日志文件失败 —— status:%x error:%d\n", status, GetLastError());
} return 0;
}最后运行结果这是:初始化USN日志失败,error:1在dev和VC6.0下都这样
FSCTL_CREATE_USN_JOURNAL,
&cujd,
sizeof(cujd),
&cujd,
sizeof(cujd),
&br,
FALSE); 这样试试 不行的话 看看 这个FSCTL_CREATE_USN_JOURNAL 用得对不对 应该还有别的把~ 多试试 就差不多了
写程序就是这样的 。 就是遇到问题 解决问题 在遇到问题 在解决