DWORD CMyExtension::HttpExtensionProc(EXTENSION_CONTROL_BLOCK *pECB)
{    HSE_EXEC_URL_INFO   ExecUrlInfo; 
    LPSTR               pUrl = NULL; 
    DWORD               cbData;  HANDLE handle;
DWORD Num;
handle= ::CreateFile("c:\\new.tmp",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_FLAG_DELETE_ON_CLOSE,NULL);
if(INVALID_HANDLE_VALUE!= handle )
{
::SetFilePointer(handle,0,0,FILE_BEGIN);
char Buffer[] = "这是个刚创建的文件";
::WriteFile(handle,Buffer,sizeof(Buffer),&Num,NULL);
::CloseHandle(handle); 
} int  dwError = GetLastError();//这个返回值为5,即拒绝访问。
........}上面这个过程,只是向磁盘创建了一个文件,并写入一个字符串,可是在调试过程中,发现这段代码很奇怪,这主要体现在两个方面。
1. CreateFile返回的值为0xfffffff,即创建文件是失败的,错误代码为5,即拒绝访问
2.有时,在调试状态下,断点不是正常的黑色的小点,而是圆点内有一个问号。
所以,我觉得这个函数是不是不支持写入文件呢?怎么 回事,有人能告诉我吗?谢谢了。

解决方案 »

  1.   

    我也碰到过相同问题,不过我是在isapi filter中碰到的
      

  2.   

    如果是ISAPI的话请在虚拟目录下建文件,在文件夹上设置权限veryone为可写
      

  3.   

    to chang19() ( ) :isapi只能在虚拟目录下写文件吗?还必须设置everyone 可写?这个权限太低了吧,太不安全了。只能这样吗?有什么文档说明没有,谢谢了
      

  4.   

    IIS权限问题,你的ISAPI是以“匿名访问 Internet 信息服务的内置帐户”访问系统的,
    没有必须写在虚拟目录下的限制,只要有权限,哪都可以!断点里面的问号,表示你调试的进程并没有加载你的dll,
    如果是IIS5.0可能是你调试错了dllhost(你的dll在另外一个dllhost里)。
    如果是IIS6.0的话可能w3wp.exe还没有加载你的dll。