Вы не можете вызвать Windows API из ядра cuda. Но, возможно, вы можете использовать pinnedmemory для доступа к памяти на стороне процессора и отсканировать ее с помощью некоторых ключевых слов из ядер cuda. Для этого вам нужно постоянно загружать новые области памяти со стороны процессора, одновременно проверяя, обнаружили ли ядра gpu что-то или нет.
Код может выглядеть примерно так:
int main()
{
Int ScannerID = 0;
bool result=false;
byte *h_aPinned;
int bytes=1000; //batch size for mem copying
// allocate and initialize
cudaMallocHost((void**)&h_aPinned, bytes,cudaHostAllocDefault);
//do stuff and fill h_aPinned with ram memory
//constantly check kernel for the results
do
kernel<<<x, y>>>(h_aPinned, result, ScannerID); //(decide x & y for your conditions)
if (result==false)
{
//copy another batch of memory just by filling h_aPinned with it.
}
while (result = true)
return 0;
}
И сторона ядра может быть примерно таким.
_global__ void kernel(byte* batchmem, bool* result, int* ID)
{
ID = threadIdx.x; //for which part of memory return true and calculate batch start point
//do search with batchmem
//you can divide search areas on threads
}