この NDIS Filter Driverがあります。10 秒ごとにパケットを送信するスレッドをドライバーで開始しようとしました。
そのために、次のコードを使用します。
LARGE_INTEGER TimePrev, TimeNow;
void ThreadedAction()
{
while(1)
{
KeQuerySystemTime(&TimeNow);
if(NBLtoSend && (TimeNow.QuadPart - TimePrev.QuadPart)>100000000)
{
NdisFSendNetBufferLists(NBLtoSend->SourceHandle, NBLtoSend, 0, 0);
KeQuerySystemTime(&TimePrev);
}
}
}
関数はPsCreateSystemThread
in で始まりましたDriverEntry
。
しかし、これは私のパケットを送信しません。
私はこれを使用しようとします:
void ThreadedAction()
{
while(1)
{
if(NBLtoSend)
{
NdisFSendNetBufferLists(NBLtoSend->SourceHandle, NBLtoSend, 0, 0);
}
}
}
このコードは、パケットをノンストップで送信します。
次のコードは、10 秒ごとに私のパケットで新しいファイルを作成します (CreateFileS は私の関数です)が、私のパケットは送信しません:
LARGE_INTEGER TimePrev, TimeNow;
void ThreadedAction()
{
while(1)
{
KeQuerySystemTime(&TimeNow);
if(NBLtoSend && (TimeNow.QuadPart - TimePrev.QuadPart)>100000000)
{
PMDL pmdl = NET_BUFFER_CURRENT_MDL(NET_BUFFER_LIST_FIRST_NB(NBLtoSend));
CreateFileS(NULL,(char*)MmGetMdlVirtualAddress(pmdl),MmGetMdlByteCount(pmdl));
NdisFSendNetBufferLists(NBLtoSend->SourceHandle, NBLtoSend, 0, 0);
KeQuerySystemTime(&TimePrev);
}
}
}
10 秒ごとにパケットを送信するにはどうすればよいですか?