[C++]监控特定文件夹的事件:三种解决方法汇总

本文介绍了三种在Windows环境下监控文件夹变化的方法:使用ReadDirectoryChangesW进行异步IO监控,通过SHChangeNotify注册事件通知,以及调用FindFirstChangeNotification结合WaitForSingleObject进行监控。详细阐述了每个方法的工作原理和适用场景,并提供了相关资源链接。

监控特定文件夹的事件:三种解决方法汇总

 

LDBIVR程序中要监视特定文件夹的文件落地或者删除事件,本来要用SHELL中的事件通知机制,后来因为要考虑到各种意外事件,如服务意外退出、服务器崩溃等,遂作罢。

对于目录事件异步通知,大致有三个方法:

调用Windowsapi函数ReadDirectoryChanges监视指定目录中文件(推荐使用),这个使用异步IO

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/readdirectorychangesw.asp

The ReadDirectoryChangesW function retrieves information that describes the changes within a directory.

To track changes on a volume, see change journals.

BOOL ReadDirectoryChangesW(

  HANDLE hDirectory,

  LPVOID lpBuffer,

  DWORD nBufferLength,

  BOOL bWatchSubtree,

  DWORD dwNotifyFilter,

  LPDWORD lpBytesReturned,

  LPOVERLAPPED lpOverlapped,

  LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine

);

 

 

或者用SHChangeNotifyRegisterSHChangeNotifyDeregister来注册事件SHChangeNotify

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shchangenotify.asp

 

SHChangeNotify Function


Notifies the system of an event that an application has performed. An application should use this function if it performs an action that may affect the Shell.

Syntax

void SHChangeNotify(      
    LONG wEventId,

    UINT uFlags,

    LPCVOID dwItem1,

    LPCVOID dwItem2

);

这个SHELL事件,有人这么介绍(http://qk.5nx.com/article_view.asp?id=11)。

 

或者调用API函数-FindFirstChangeNotification FindCloseChangeNotificationFindNextChangeNotification WaitForSingleObject

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/findfirstchangenotification.asp

FindFirstChangeNotification

The FindFirstChangeNotification function creates a change notification handle and sets up initial change notification filter conditions. A wait on a notification handle succeeds when a change matching the filter conditions occurs in the specified directory or subtree. However, the function does not indicate the change that satisfied the wait condition.

To retrieve information about the specific change as part of the notification, use the ReadDirectoryChangesW function.

HANDLE FindFirstChangeNotification(

  LPCTSTR lpPathName,

  BOOL bWatchSubtree,

  DWORD dwNotifyFilter

);


著名的FileMon工具用的是虚拟驱动。 

 

相关资源:

1:《监视程序的编制》;

2:《Win32中的目录监控》;

3:《change journals》;

4:《CDirectoryChangeWatcher - ReadDirectoryChangesW all wrapped up》;

5:《监测目录活动》;

6:《请问如何监视系统对文件的访问?》。

Disclaimers

Programmer’s Blog List

博客堂

 

博客园

 

Don Box's Blog

Eric.Weblog()

 

Blogs@asp.net

 

本文档仅供参考。本文档所包含的信息代表了在发布之日,zhengyun_ustc对所讨论问题的当前看法,zhengyun_ustc不保证所给信息在发布之日以后的准确性。

用户应清楚本文档的准确性及其使用可能带来的全部风险。可以复制和传播本文档,但须遵守以下条款:

  1. 复制时不得修改原文,复制内容须包含所有页
  2. 所有副本均须含有 zhengyun_ustc的版权声明以及所提供的其它声明
  3. 不得以赢利为目的对本文档进行传播

 




监控特定文件夹的事件:三种解决方法汇总

 

LDBIVR程序中要监视特定文件夹的文件落地或者删除事件,本来要用SHELL中的事件通知机制,后来因为要考虑到各种意外事件,如服务意外退出、服务器崩溃等,遂作罢。

对于目录事件异步通知,大致有三个方法:

调用Windowsapi函数ReadDirectoryChanges监视指定目录中文件(推荐使用),这个使用异步IO

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/readdirectorychangesw.asp

The ReadDirectoryChangesW function retrieves information that describes the changes within a directory.

To track changes on a volume, see change journals.

BOOL ReadDirectoryChangesW(

  HANDLE hDirectory,

  LPVOID lpBuffer,

  DWORD nBufferLength,

  BOOL bWatchSubtree,

  DWORD dwNotifyFilter,

  LPDWORD lpBytesReturned,

  LPOVERLAPPED lpOverlapped,

  LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine

);

 

 

或者用SHChangeNotifyRegisterSHChangeNotifyDeregister来注册事件SHChangeNotify

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shchangenotify.asp

 

SHChangeNotify Function


Notifies the system of an event that an application has performed. An application should use this function if it performs an action that may affect the Shell.

Syntax

void SHChangeNotify(      
    LONG wEventId,

    UINT uFlags,

    LPCVOID dwItem1,

    LPCVOID dwItem2

);

这个SHELL事件,有人这么介绍(http://qk.5nx.com/article_view.asp?id=11)。

 

或者调用API函数-FindFirstChangeNotification FindCloseChangeNotificationFindNextChangeNotification WaitForSingleObject

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/findfirstchangenotification.asp

FindFirstChangeNotification

The FindFirstChangeNotification function creates a change notification handle and sets up initial change notification filter conditions. A wait on a notification handle succeeds when a change matching the filter conditions occurs in the specified directory or subtree. However, the function does not indicate the change that satisfied the wait condition.

To retrieve information about the specific change as part of the notification, use the ReadDirectoryChangesW function.

HANDLE FindFirstChangeNotification(

  LPCTSTR lpPathName,

  BOOL bWatchSubtree,

  DWORD dwNotifyFilter

);


著名的FileMon工具用的是虚拟驱动。 

 

相关资源:

1:《监视程序的编制》;

2:《Win32中的目录监控》;

3:《change journals》;

4:《CDirectoryChangeWatcher - ReadDirectoryChangesW all wrapped up》;

5:《监测目录活动》;

6:《请问如何监视系统对文件的访问?》。

Disclaimers

Programmer’s Blog List

博客堂

 

博客园

 

Don Box's Blog

Eric.Weblog()

 

Blogs@asp.net

 

本文档仅供参考。本文档所包含的信息代表了在发布之日,zhengyun_ustc对所讨论问题的当前看法,zhengyun_ustc不保证所给信息在发布之日以后的准确性。

用户应清楚本文档的准确性及其使用可能带来的全部风险。可以复制和传播本文档,但须遵守以下条款:

  1. 复制时不得修改原文,复制内容须包含所有页
  2. 所有副本均须含有 zhengyun_ustc的版权声明以及所提供的其它声明
  3. 不得以赢利为目的对本文档进行传播

 




监控特定文件夹的事件:三种解决方法汇总

 

LDBIVR程序中要监视特定文件夹的文件落地或者删除事件,本来要用SHELL中的事件通知机制,后来因为要考虑到各种意外事件,如服务意外退出、服务器崩溃等,遂作罢。

对于目录事件异步通知,大致有三个方法:

调用Windowsapi函数ReadDirectoryChanges监视指定目录中文件(推荐使用),这个使用异步IO

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/readdirectorychangesw.asp

The ReadDirectoryChangesW function retrieves information that describes the changes within a directory.

To track changes on a volume, see change journals.

BOOL ReadDirectoryChangesW(

  HANDLE hDirectory,

  LPVOID lpBuffer,

  DWORD nBufferLength,

  BOOL bWatchSubtree,

  DWORD dwNotifyFilter,

  LPDWORD lpBytesReturned,

  LPOVERLAPPED lpOverlapped,

  LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine

);

 

 

或者用SHChangeNotifyRegisterSHChangeNotifyDeregister来注册事件SHChangeNotify

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shchangenotify.asp

 

SHChangeNotify Function


Notifies the system of an event that an application has performed. An application should use this function if it performs an action that may affect the Shell.

Syntax

void SHChangeNotify(      
    LONG wEventId,

    UINT uFlags,

    LPCVOID dwItem1,

    LPCVOID dwItem2

);

这个SHELL事件,有人这么介绍(http://qk.5nx.com/article_view.asp?id=11)。

 

或者调用API函数-FindFirstChangeNotification FindCloseChangeNotificationFindNextChangeNotification WaitForSingleObject

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/findfirstchangenotification.asp

FindFirstChangeNotification

The FindFirstChangeNotification function creates a change notification handle and sets up initial change notification filter conditions. A wait on a notification handle succeeds when a change matching the filter conditions occurs in the specified directory or subtree. However, the function does not indicate the change that satisfied the wait condition.

To retrieve information about the specific change as part of the notification, use the ReadDirectoryChangesW function.

HANDLE FindFirstChangeNotification(

  LPCTSTR lpPathName,

  BOOL bWatchSubtree,

  DWORD dwNotifyFilter

);


著名的FileMon工具用的是虚拟驱动。 

 

相关资源:

1:《监视程序的编制》;

2:《Win32中的目录监控》;

3:《change journals》;

4:《CDirectoryChangeWatcher - ReadDirectoryChangesW all wrapped up》;

5:《监测目录活动》;

6:《请问如何监视系统对文件的访问?》。

Disclaimers

Programmer’s Blog List

博客堂

 

博客园

 

Don Box's Blog

Eric.Weblog()

 

Blogs@asp.net

 

本文档仅供参考。本文档所包含的信息代表了在发布之日,zhengyun_ustc对所讨论问题的当前看法,zhengyun_ustc不保证所给信息在发布之日以后的准确性。

用户应清楚本文档的准确性及其使用可能带来的全部风险。可以复制和传播本文档,但须遵守以下条款:

  1. 复制时不得修改原文,复制内容须包含所有页
  2. 所有副本均须含有 zhengyun_ustc的版权声明以及所提供的其它声明
  3. 不得以赢利为目的对本文档进行传播

 




监控特定文件夹的事件:三种解决方法汇总

 

LDBIVR程序中要监视特定文件夹的文件落地或者删除事件,本来要用SHELL中的事件通知机制,后来因为要考虑到各种意外事件,如服务意外退出、服务器崩溃等,遂作罢。

对于目录事件异步通知,大致有三个方法:

调用Windowsapi函数ReadDirectoryChanges监视指定目录中文件(推荐使用),这个使用异步IO

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/readdirectorychangesw.asp

The ReadDirectoryChangesW function retrieves information that describes the changes within a directory.

To track changes on a volume, see change journals.

BOOL ReadDirectoryChangesW(

  HANDLE hDirectory,

  LPVOID lpBuffer,

  DWORD nBufferLength,

  BOOL bWatchSubtree,

  DWORD dwNotifyFilter,

  LPDWORD lpBytesReturned,

  LPOVERLAPPED lpOverlapped,

  LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine

);

 

 

或者用SHChangeNotifyRegisterSHChangeNotifyDeregister来注册事件SHChangeNotify

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shchangenotify.asp

 

SHChangeNotify Function


Notifies the system of an event that an application has performed. An application should use this function if it performs an action that may affect the Shell.

Syntax

void SHChangeNotify(      
    LONG wEventId,

    UINT uFlags,

    LPCVOID dwItem1,

    LPCVOID dwItem2

);

这个SHELL事件,有人这么介绍(http://qk.5nx.com/article_view.asp?id=11)。

 

或者调用API函数-FindFirstChangeNotification FindCloseChangeNotificationFindNextChangeNotification WaitForSingleObject

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/findfirstchangenotification.asp

FindFirstChangeNotification

The FindFirstChangeNotification function creates a change notification handle and sets up initial change notification filter conditions. A wait on a notification handle succeeds when a change matching the filter conditions occurs in the specified directory or subtree. However, the function does not indicate the change that satisfied the wait condition.

To retrieve information about the specific change as part of the notification, use the ReadDirectoryChangesW function.

HANDLE FindFirstChangeNotification(

  LPCTSTR lpPathName,

  BOOL bWatchSubtree,

  DWORD dwNotifyFilter

);


著名的FileMon工具用的是虚拟驱动。 

 

相关资源:

1:《监视程序的编制》;

2:《Win32中的目录监控》;

3:《change journals》;

4:《CDirectoryChangeWatcher - ReadDirectoryChangesW all wrapped up》;

5:《监测目录活动》;

6:《请问如何监视系统对文件的访问?》。

Disclaimers

Programmer’s Blog List

博客堂

 

博客园

 

Don Box's Blog

Eric.Weblog()

 

Blogs@asp.net

 

本文档仅供参考。本文档所包含的信息代表了在发布之日,zhengyun_ustc对所讨论问题的当前看法,zhengyun_ustc不保证所给信息在发布之日以后的准确性。

用户应清楚本文档的准确性及其使用可能带来的全部风险。可以复制和传播本文档,但须遵守以下条款:

  1. 复制时不得修改原文,复制内容须包含所有页
  2. 所有副本均须含有 zhengyun_ustc的版权声明以及所提供的其它声明
  3. 不得以赢利为目的对本文档进行传播

 




监控特定文件夹的事件:三种解决方法汇总

 

LDBIVR程序中要监视特定文件夹的文件落地或者删除事件,本来要用SHELL中的事件通知机制,后来因为要考虑到各种意外事件,如服务意外退出、服务器崩溃等,遂作罢。

对于目录事件异步通知,大致有三个方法:

调用Windowsapi函数ReadDirectoryChanges监视指定目录中文件(推荐使用),这个使用异步IO

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/readdirectorychangesw.asp

The ReadDirectoryChangesW function retrieves information that describes the changes within a directory.

To track changes on a volume, see change journals.

BOOL ReadDirectoryChangesW(

  HANDLE hDirectory,

  LPVOID lpBuffer,

  DWORD nBufferLength,

  BOOL bWatchSubtree,

  DWORD dwNotifyFilter,

  LPDWORD lpBytesReturned,

  LPOVERLAPPED lpOverlapped,

  LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine

);

 

 

或者用SHChangeNotifyRegisterSHChangeNotifyDeregister来注册事件SHChangeNotify

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shchangenotify.asp

 

SHChangeNotify Function


Notifies the system of an event that an application has performed. An application should use this function if it performs an action that may affect the Shell.

Syntax

void SHChangeNotify(      
    LONG wEventId,

    UINT uFlags,

    LPCVOID dwItem1,

    LPCVOID dwItem2

);

这个SHELL事件,有人这么介绍(http://qk.5nx.com/article_view.asp?id=11)。

 

或者调用API函数-FindFirstChangeNotification FindCloseChangeNotificationFindNextChangeNotification WaitForSingleObject

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/findfirstchangenotification.asp

FindFirstChangeNotification

The FindFirstChangeNotification function creates a change notification handle and sets up initial change notification filter conditions. A wait on a notification handle succeeds when a change matching the filter conditions occurs in the specified directory or subtree. However, the function does not indicate the change that satisfied the wait condition.

To retrieve information about the specific change as part of the notification, use the ReadDirectoryChangesW function.

HANDLE FindFirstChangeNotification(

  LPCTSTR lpPathName,

  BOOL bWatchSubtree,

  DWORD dwNotifyFilter

);


著名的FileMon工具用的是虚拟驱动。 

 

相关资源:

1:《监视程序的编制》;

2:《Win32中的目录监控》;

3:《change journals》;

4:《CDirectoryChangeWatcher - ReadDirectoryChangesW all wrapped up》;

5:《监测目录活动》;

6:《请问如何监视系统对文件的访问?》。

Disclaimers

Programmer’s Blog List

博客堂

 

博客园

 

Don Box's Blog

Eric.Weblog()

 

Blogs@asp.net

 

本文档仅供参考。本文档所包含的信息代表了在发布之日,zhengyun_ustc对所讨论问题的当前看法,zhengyun_ustc不保证所给信息在发布之日以后的准确性。

用户应清楚本文档的准确性及其使用可能带来的全部风险。可以复制和传播本文档,但须遵守以下条款:

  1. 复制时不得修改原文,复制内容须包含所有页
  2. 所有副本均须含有 zhengyun_ustc的版权声明以及所提供的其它声明
  3. 不得以赢利为目的对本文档进行传播

 




监控特定文件夹的事件:三种解决方法汇总

 

LDBIVR程序中要监视特定文件夹的文件落地或者删除事件,本来要用SHELL中的事件通知机制,后来因为要考虑到各种意外事件,如服务意外退出、服务器崩溃等,遂作罢。

对于目录事件异步通知,大致有三个方法:

调用Windowsapi函数ReadDirectoryChanges监视指定目录中文件(推荐使用),这个使用异步IO

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/readdirectorychangesw.asp

The ReadDirectoryChangesW function retrieves information that describes the changes within a directory.

To track changes on a volume, see change journals.

BOOL ReadDirectoryChangesW(

  HANDLE hDirectory,

  LPVOID lpBuffer,

  DWORD nBufferLength,

  BOOL bWatchSubtree,

  DWORD dwNotifyFilter,

  LPDWORD lpBytesReturned,

  LPOVERLAPPED lpOverlapped,

  LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine

);

 

 

或者用SHChangeNotifyRegisterSHChangeNotifyDeregister来注册事件SHChangeNotify

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shchangenotify.asp

 

SHChangeNotify Function


Notifies the system of an event that an application has performed. An application should use this function if it performs an action that may affect the Shell.

Syntax

void SHChangeNotify(      
    LONG wEventId,

    UINT uFlags,

    LPCVOID dwItem1,

    LPCVOID dwItem2

);

这个SHELL事件,有人这么介绍(http://qk.5nx.com/article_view.asp?id=11)。

 

或者调用API函数-FindFirstChangeNotification FindCloseChangeNotificationFindNextChangeNotification WaitForSingleObject

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/findfirstchangenotification.asp

FindFirstChangeNotification

The FindFirstChangeNotification function creates a change notification handle and sets up initial change notification filter conditions. A wait on a notification handle succeeds when a change matching the filter conditions occurs in the specified directory or subtree. However, the function does not indicate the change that satisfied the wait condition.

To retrieve information about the specific change as part of the notification, use the ReadDirectoryChangesW function.

HANDLE FindFirstChangeNotification(

  LPCTSTR lpPathName,

  BOOL bWatchSubtree,

  DWORD dwNotifyFilter

);


著名的FileMon工具用的是虚拟驱动。 

 

相关资源:

1:《监视程序的编制》;

2:《Win32中的目录监控》;

3:《change journals》;

4:《CDirectoryChangeWatcher - ReadDirectoryChangesW all wrapped up》;

5:《监测目录活动》;

6:《请问如何监视系统对文件的访问?》。

Disclaimers

Programmer’s Blog List

博客堂

 

博客园

 

Don Box's Blog

Eric.Weblog()

 

Blogs@asp.net

 

本文档仅供参考。本文档所包含的信息代表了在发布之日,zhengyun_ustc对所讨论问题的当前看法,zhengyun_ustc不保证所给信息在发布之日以后的准确性。

用户应清楚本文档的准确性及其使用可能带来的全部风险。可以复制和传播本文档,但须遵守以下条款:

  1. 复制时不得修改原文,复制内容须包含所有页
  2. 所有副本均须含有 zhengyun_ustc的版权声明以及所提供的其它声明
  3. 不得以赢利为目的对本文档进行传播

 




监控特定文件夹的事件:三种解决方法汇总

 

LDBIVR程序中要监视特定文件夹的文件落地或者删除事件,本来要用SHELL中的事件通知机制,后来因为要考虑到各种意外事件,如服务意外退出、服务器崩溃等,遂作罢。

对于目录事件异步通知,大致有三个方法:

调用Windowsapi函数ReadDirectoryChanges监视指定目录中文件(推荐使用),这个使用异步IO

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/readdirectorychangesw.asp

The ReadDirectoryChangesW function retrieves information that describes the changes within a directory.

To track changes on a volume, see change journals.

BOOL ReadDirectoryChangesW(

  HANDLE hDirectory,

  LPVOID lpBuffer,

  DWORD nBufferLength,

  BOOL bWatchSubtree,

  DWORD dwNotifyFilter,

  LPDWORD lpBytesReturned,

  LPOVERLAPPED lpOverlapped,

  LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine

);

 

 

或者用SHChangeNotifyRegisterSHChangeNotifyDeregister来注册事件SHChangeNotify

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shchangenotify.asp

 

SHChangeNotify Function


Notifies the system of an event that an application has performed. An application should use this function if it performs an action that may affect the Shell.

Syntax

void SHChangeNotify(      
    LONG wEventId,

    UINT uFlags,

    LPCVOID dwItem1,

    LPCVOID dwItem2

);

这个SHELL事件,有人这么介绍(http://qk.5nx.com/article_view.asp?id=11)。

 

或者调用API函数-FindFirstChangeNotification FindCloseChangeNotificationFindNextChangeNotification WaitForSingleObject

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/findfirstchangenotification.asp

FindFirstChangeNotification

The FindFirstChangeNotification function creates a change notification handle and sets up initial change notification filter conditions. A wait on a notification handle succeeds when a change matching the filter conditions occurs in the specified directory or subtree. However, the function does not indicate the change that satisfied the wait condition.

To retrieve information about the specific change as part of the notification, use the ReadDirectoryChangesW function.

HANDLE FindFirstChangeNotification(

  LPCTSTR lpPathName,

  BOOL bWatchSubtree,

  DWORD dwNotifyFilter

);


著名的FileMon工具用的是虚拟驱动。 

 

相关资源:

1:《监视程序的编制》;

2:《Win32中的目录监控》;

3:《change journals》;

4:《CDirectoryChangeWatcher - ReadDirectoryChangesW all wrapped up》;

5:《监测目录活动》;

6:《请问如何监视系统对文件的访问?》。

Disclaimers

Programmer’s Blog List

博客堂

 

博客园

 

Don Box's Blog

Eric.Weblog()

 

Blogs@asp.net

 

本文档仅供参考。本文档所包含的信息代表了在发布之日,zhengyun_ustc对所讨论问题的当前看法,zhengyun_ustc不保证所给信息在发布之日以后的准确性。

用户应清楚本文档的准确性及其使用可能带来的全部风险。可以复制和传播本文档,但须遵守以下条款:

  1. 复制时不得修改原文,复制内容须包含所有页
  2. 所有副本均须含有 zhengyun_ustc的版权声明以及所提供的其它声明
  3. 不得以赢利为目的对本文档进行传播

 




评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值