鱼C论坛

 找回密码
 立即注册
查看: 7844|回复: 5

大家帮帮看看这段代码是VC还是VC++?是部分子程序 ?编译不成功。

[复制链接]
发表于 2012-2-4 16:57:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<ntddk.h>


//--------------------------------------------------------------------

VOID ReadPhysicalSector(unsigned long SectorStart,unsigned long SectorCount,unsigned char *p)

{

    unsigned long BytesPerSector = 512;

    WCHAR* name = L"//??//PHYSICALDRIVE0";//这个找了好久呀,原来要这样写的


    NTSTATUS ntStatus;

    HANDLE hDeviceHandle;

    IO_STATUS_BLOCK IoStatusBlock;

    IO_STATUS_BLOCK IoStatusBlockR;

    OBJECT_ATTRIBUTES ObjectAttributesL;

    UNICODE_STRING UniFileNameL;


    LARGE_INTEGER ByteOffset;


    RtlInitUnicodeString(&UniFileNameL,name);

    InitializeObjectAttributes( &ObjectAttributesL,

                                &UniFileNameL,

                                OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE,

                                NULL,

                                NULL);


    ntStatus = ZwCreateFile(&hDeviceHandle,

                            GENERIC_READ,

                            &ObjectAttributesL,

                            &IoStatusBlock,

                            NULL,

                            0,

                            FILE_SHARE_READ,

                            FILE_OPEN,

                            FILE_SYNCHRONOUS_IO_ALERT,

                            NULL,

                            0);

   

    if( NT_SUCCESS(ntStatus) )

    {

        DbgPrint("Open Success");


//      ByteOffset.LowPart = FILE_USE_FILE_POINTER_POSITION;

//      ByteOffset.HighPart = -1;不要用这两句换成下面一句,DDK误导人啊~~~~~

        ByteOffset.QuadPart = SectorStart*BytesPerSector;//是这句了


        ntStatus = ZwReadFile(  hDeviceHandle,

                                NULL,

                                NULL,

                                NULL,

                                &IoStatusBlockR,

                                p,

                                SectorCount*BytesPerSector,

                                &ByteOffset,

                                NULL);


        if( NT_SUCCESS(ntStatus) )

        {

            DbgPrint("Read Success");

        }

    }


    ZwClose(hDeviceHandle);

}

//--------------------------------------------------------------------

VOID OnUnload(IN PDRIVER_OBJECT DriverObject)

{

    DbgPrint("     88  ");

}


NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath)

{

    unsigned long SectorStart = 63;//现在是读扇区啦

    unsigned long SectorCount = 1;

    unsigned char p[512];

    int i;

   

    DriverObject->DriverUnload = OnUnload;


    DbgPrint("Hi");


    ReadPhysicalSector(SectorStart ,SectorCount, p);

    for(i=0;i<512;i++)

        DbgPrint("%02X ",p[i]);


    return STATUS_SUCCESS;

}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-4 19:47:00 | 显示全部楼层
#include "NTDDK.H"
你要确认你安装可WDK开发包,还要把WDK开发包包含进工程,具体做法很麻烦,我也就不打字了,在网上给你找了一段;

设置VC编译驱动的环境,这才是重点。

           打开VC的Tool->Options->Directories里设置Include,Lib,及Exectuable File。这里说明下为什么要设置这三个东西:Include目录中,主要是供我们开发使用的头文件.h文件;Lib目录,为我们驱动所要调用的一些链接库文件;Exectuable File,这个很重要,它里面包含了我们编译驱动所使用的Cl.exe及连接link.exe文件,VC正是通过这两个文件来生成最后的驱动.sys文件(如果编译出现cl.exe错误,说明是这里的路径设置的不正确,我先前在这里走了弯路了,所以提醒下)。

          设置Include路径:

           E:WINDDK6001.18002INC

           E:WINDDK6001.18002INCCRT

          E:WINDDK6001.18002INCDDK

          E:WINDDK6001.18002INCAPI   (这里可能有些不需要,也可能少了,根据自己的情况在INC目录下继续添加就OK了)

         

           设置LIB路径:

            E:WINDDK6001.18002LIB

            E:WINDDK6001.18002LIBCRTI386

            E:WINDDK6001.18002LIBWNETI386



            设置Executable Files:

            E:WINDDK6001.18002binx86x86

           (这里要注意,一定要在binx86目录下,确切的找到Cl.exe文件,然后添加它所在的目录,DDK与WDK这个文件所在的路径并不是一样的,上面的是我所安装的WDK中cl.exe所在的路径,这里要根据不同情况选择正确的路径)
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-5 10:32:04 | 显示全部楼层
编译出现的错误是 SHSQL.DLL   必需的文件的不能加载 请重新安装
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-5 10:58:45 | 显示全部楼层
Compiling...
Text1.c
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8556) : error C2061: syntax error : identifier 'PCONTEXT'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8557) : error C2059: syntax error : '}'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8771) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8775) : error C2085: 'KeInitializeDpc' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8777) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8787) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8789) : error C2085: 'KeRemoveQueueDpc' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8791) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8800) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8803) : error C2085: 'KeSetTargetProcessorDpc' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8809) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8817) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8820) : error C2085: 'KeInsertDeviceQueue' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8822) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8832) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8834) : error C2085: 'KeRemoveDeviceQueue' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8836) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8845) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8848) : error C2085: 'KeRemoveEntryDeviceQueue' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8850) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8868) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8872) : error C2085: 'KeInitializeEvent' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8874) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8895) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8897) : error C2085: 'KeReadStateEvent' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8899) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8907) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8911) : error C2085: 'KeSetEvent' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8917) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8928) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8931) : error C2085: 'KeReleaseMutex' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8937) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8947) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8949) : error C2085: 'KeReadStateSemaphore' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8951) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8962) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8966) : error C2085: 'KeDelayExecutionThread' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8968) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8977) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8980) : error C2085: 'KeSetPriorityThread' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8985) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8993) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(8995) : error C2085: 'KeLeaveCriticalRegion' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9065) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9073) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9076) : error C2085: 'KeInitializeTimerEx' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9078) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9086) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9088) : error C2085: 'KeReadStateTimer' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9090) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9100) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9105) : error C2085: 'KeSetTimerEx' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9110) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9125) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9131) : error C2085: 'KeWaitForSingleObject' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9137) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9167) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9169) : error C2085: 'KeAcquireSpinLockAtDpcLevel' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9171) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9453) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9456) : error C2085: 'KeBugCheck' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9458) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9473) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9475) : error C2085: 'KeDeregisterBugCheckCallback' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9477) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9489) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9491) : error C2085: 'KeEnterKernelDebugger' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9494) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9502) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9504) : error C2085: 'KeQueryTimeIncrement' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9515) : error C2085: 'PSWAP_CONTEXT_NOTIFY_ROUTINE' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9517) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9536) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9539) : error C2085: 'KeSetThreadSelectNotifyRoutine' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9550) : error C2085: 'PTIME_UPDATE_NOTIFY_ROUTINE' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9552) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9559) : error C2061: syntax error : identifier 'KeTickCount'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9559) : error C2059: syntax error : ';'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9595) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9598) : error C2085: 'ExAllocatePool' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9600) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9609) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9613) : error C2085: 'ExAllocatePoolWithTag' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9620) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9634) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9637) : error C2085: 'ExFreePool' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9649) : error C2085: 'FAST_MUTEX' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9649) : error C2085: 'PFAST_MUTEX' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9668) : error C2061: syntax error : identifier 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9677) : error C2054: expected '(' to follow 'NTKERNELAPI'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9679) : error C2146: syntax error : missing ')' before identifier 'FastMutex'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9679) : error C2085: 'ExReleaseFastMutexUnsafe' : not in formal parameter list
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9679) : error C2146: syntax error : missing ',' before identifier 'FastMutex'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9680) : error C2059: syntax error : ')'
c:\program files\microsoft visual studio\vc98\include\ntddk.h(9728) : fatal error C1017: invalid integer constant expression
执行 cl.exe 时出错.

Text1.obj - 1 error(s), 0 warning(s)
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-5 12:18:02 | 显示全部楼层
安装了WDK后  设置了目录     只有一个错误了:
Compiling...
cl : Command line warning D9035 : option 'GX' has been deprecated and will be removed in a future release
cl : Command line warning D9036 : use 'EHsc' instead of 'GX'
cl : Command line warning D9035 : option 'GZ' has been deprecated and will be removed in a future release
cl : Command line warning D9036 : use 'RTC1' instead of 'GZ'
cl : Command line warning D9002 : ignoring unknown option '/MLd'
cl : Command line warning D9002 : ignoring unknown option '/YX'
Text1.c
c:\winddk\7600.16385.1\inc\ddk\wdm.h(14197) : fatal error C1189: #error :  "No target architecture defined"
执行 cl.exe 时出错.

Text1.obj - 1 error(s), 0 warning(s)
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-20 15:35:58 | 显示全部楼层
Compiling...
cl : Command line warning D9035 : option 'GX' has been deprecated and will be removed in a future release
cl : Command line warning D9036 : use 'EHsc' instead of 'GX'
cl : Command line warning D9035 : option 'GZ' has been deprecated and will be removed in a future release
cl : Command line warning D9036 : use 'RTC1' instead of 'GZ'
cl : Command line warning D9002 : ignoring unknown option '/MLd'
cl : Command line warning D9002 : ignoring unknown option '/YX'
event.c
d:\winddk\7600.16385.1\inc\api\sal.h(932) : fatal error C1083: Cannot open include file: 'codeanalysis\sourceannotations.h': No such file or directory
执行 cl.exe 时出错.

evnet.exe - 1 error(s), 0 warning(s)
怎么老是提示没这个??
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-10 14:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表