我想初始化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下都这样

解决方案 »

  1.   

    说说error:1的原因有哪些啊?
      

  2.   

    BOOL status = DeviceIoControl(hVol,   
      FSCTL_CREATE_USN_JOURNAL,   
      &cujd,   
      sizeof(cujd),   
      &cujd,   
      sizeof(cujd),   
      &br,   
      FALSE);  这样试试  不行的话  看看 这个FSCTL_CREATE_USN_JOURNAL 用得对不对 应该还有别的把~ 多试试 就差不多了
      

  3.   

    还是不行#define FSCTL_CREATE_USN_JOURNAL        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57,  METHOD_NEITHER, FILE_ANY_ACCESS) // CREATE_USN_JOURNAL_DATA
      

  4.   

    你把CreateFileA()第一个参数 直接用“\\\\.\\C:”这种 看看 可能我给的不对啊 你自己校队一下
      

  5.   

    还是老样子,看来我不能玩USN了
      

  6.   

    在网上 找找吧 没弄过USN  但你的错误基本就是这一类的 在网上好好找找吧 
    写程序就是这样的 。 就是遇到问题 解决问题 在遇到问题 在解决